Somente no emulador do iPhone é que da problema. O Android funcionou perfeitamente. Por algum motivo ele não limpa o TextInput. Alguém tem alguma ideia do motivo?
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
Image,
FlatList,
TouchableOpacity,
Dimensions,
TextInput
} from 'react-native';
type Props = {};
export default class Post extends Component<Props> {
constructor(props){
super(props);
this.state = {
foto: this.props.foto,
valorComentario: ''
}
}
carregaIcone(likeada) {
return likeada ? require('../../resources/img/s2-red.png') :
require('../../resources/img/s2-white.png');
}
like() {
const { foto } = this.state;
let novalista = [];
if (!foto.likeada) {
novalista = [...foto.likers,
{login:'Belclei'}];
} else {
novalista = foto.likers.filter(liker => {
return liker.login !== 'Belclei'
})
}
const fotoAtualizada = {
...foto,
likeada: !foto.likeada,
likers: novalista
}
this.setState({foto: fotoAtualizada});
}
exibeLikes(likers){
if (likers <= 0) {
return;
}
return (
<Text style={styles.likes}>
{likers.length} {likers.length > 1 ? 'curtidas' : 'curtida'}
</Text>
);
}
exibeLegenda(foto){
if (foto.comentario === '') {
return;
}
return (
<View style={styles.comentario}>
<Text style={styles.tituloComentario}>{foto.loginUsuario}</Text>
<Text>{foto.comentario}</Text>
</View>
);
}
adicionaComentario () {
if (this.state.valorComentario === '')
return;
const novaLista = [...this.state.foto.comentarios,
{
id: this.state.valorComentario,
login: 'Belclei',
texto: this.state.valorComentario
}];
const fotoAtualizada = {
...this.state.foto,
comentarios: novaLista
};
this.setState({foto: fotoAtualizada, valorComentario: ''});
this.inputComentario.clear();
}
render() {
const { foto } = this.state;
return(
<View>
<View style={styles.cabecalho}>
<Image source={{uri: foto.urlPerfil}} style={styles.avatar}/>
<Text>{foto.loginUsuario}</Text>
</View>
<Image source={{uri: foto.urlFoto}} style={styles.foto}/>
<View style={styles.rodape}>
<TouchableOpacity onPress={ this.like.bind(this) }>
<Image source={this.carregaIcone(foto.likeada)}
style={styles.botaoDeLike}/>
</TouchableOpacity>
{this.exibeLikes(foto.likers)}
{this.exibeLegenda(foto)}
{foto.comentarios.map(comentario =>
<View key={comentario.id} style={styles.comentario}>
<Text style={styles.tituloComentario}>{comentario.login}</Text>
<Text>{comentario.texto}</Text>
</View>
)}
<View style={styles.novoComentario}>
<TextInput style={styles.input}
underlineColorAndroid='transparent'
ref={input => this.inputComentario = input}
onChangeText={texto => this.setState({valorComentario: texto})}
placeholder="Adicione um comentario..."/>
<TouchableOpacity onPress={this.adicionaComentario.bind(this)}>
<Image style={styles.icone} source={require('../../resources/img/send.png')} />
</TouchableOpacity>
</View>
</View>
</View>
);
}
}