1
resposta

Estou tendo um erro na função Like, o erro é:

O problema foi resolvido, eu estava chamando á variável foto no método de exibiLikes sem de fato estar passando essa variável com parametro export default class Post extends Component {

    super(props);
    this.state = {
        foto: this.props.foto
    }
}

carregaIcone(likeada) {
    return likeada ? require('../../resources/img/s2-checked.png') :
        require('../../resources/img/s2.png')
}

like() {
    let novaLista = [];
    if (!this.state.foto.likeada) {
        novaLista = this.state.foto.likers.concat({ login: 'meuUsuario' });
    }

    const fotoAtualizada = {
        ...this.state.foto,
        likeada: !this.state.foto.likeada,
        likers: novaLista
    }

    this.setState({ foto: fotoAtualizada })
}

exibeLikes(likers) {
    if (likers.length > 0) {
        return (
            <Text style={styles.likes}>
                {foto.likers.length} {foto.likers.length > 1 ? 'curtidas' : 'curtida'}
            </Text>
        );
    }
}

exibeComentario(foto) {
    if (foto.comentario != '') {
        return (
            <View style={styles.comentario}>
                <Text style={styles.tituloComentario}>{foto.loginUsuario}</Text>
                <Text>{foto.comentario}</Text>
            </View>
        );
    }
}

render() {
    const { foto } = this.state;

    return (
        <View style={styles.rodape}>
            <View style={styles.cabecalho}>
                <Image source={{ uri: foto.urlPerfil }}
                    style={styles.fotoDePerfil} />
                <Text>{foto.loginUsuario}</Text>
            </View>
            <Image source={{ uri: foto.urlFoto }}
                style={styles.foto} />
            <TouchableOpacity onPress={this.like.bind(this)} >
                <View style={styles.rodape}>
                    <Image style={styles.botaoDeLike}
                        source={this.carregaIcone(foto.likeada)} />
                </View>
            </TouchableOpacity>

            {this.exibeLikes(foto.likers)}
            {this.exibeComentario(foto)}
        </View>
    );
}

}

1 resposta

Fala aí Jesiel, tudo bem? Fico feliz que o problema foi resolvido, consegue postar um comentário com a solução? Dai a gente marca ele como solução e fechamos o tópico.

Assim conseguimos ajudar outros alunos com o mesmo problema.

Abraços e bons estudos.