Olá Professor,
Na função de like quando coloco ela o onPress do TouchableOpacity assim
this.state.like.bind(this) não está funcionando.
Porém quando retiro o bind está funcionando. Nesse caso para que foi colocado o bind(this)?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá Professor,
Na função de like quando coloco ela o onPress do TouchableOpacity assim
this.state.like.bind(this) não está funcionando.
Porém quando retiro o bind está funcionando. Nesse caso para que foi colocado o bind(this)?
Fala Vitor, tudo bem ?
Você deve ter um escopo parecido com o que segue:
class Post extends Component {
constructor(props) {
super(props);
this.state = {
foto: this.props.foto;
}
}
// ...
like() {
// ...
}
// ...
render() {
return (
...
<TouchableOpacity onPress={}>
...
</TouchableOpacity>
...
);
}
}
Quando você passa no onPress a referência this.state.like.bind(this) o código não funciona porque ele procura pela referência da função like - para fazer bind com o this do componente react, e ser possível usar setState, por exemplo - dentro do objeto state do componente. Perceba que o state não possui a referência para esta função, mas somente a referencia para o objeto da foto. Então acaba tendo erro.
Quando você passa apenas this.state.like, o código a primeira vista funciona porque ainda não foi preciso usar a referência (não precisou chamar o bind(this)), que se encontra undefined, mas provavelmente terá erro em execução quando tentar executar a curtida, dado que a referência para a função like não se encontra dentro do objeto state.
No seu caso, você precisa passar a referencia da seguinte maneira: ... onPress={this.like.bind(this)} ...
Assim nos referimos corretamente à função like que se encontra no nosso componente.
Espero ter ajudado. Abraço!