Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Interagindo com o clique no curtir

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

1 resposta
solução!

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!