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)?
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!