Ao reagir ou reagir de forma nativa, a maneira como o componente ocultar / mostrar ou adicionar / remover não funciona como no Android ou iOS. Muitos de nós pensam que haveria uma estratégia semelhante como
View.hide = true or parentView.addSubView(childView)
Mas a maneira como reage ao trabalho nativo é completamente diferente. A única maneira de obter esse tipo de funcionalidade é incluir seu componente no seu DOM ou remover do DOM.
Aqui neste exemplo, vou definir a visibilidade da exibição de texto com base no clique do botão.
A idéia por trás dessa tarefa é criar uma variável de estado chamada state, com o valor inicial definido como false quando o evento de clique no botão acontece e o valor alterna. Agora vamos usar essa variável de estado durante a criação do componente.
import renderIf from './renderIf'
class FetchSample extends Component {
constructor(){
super();
this.state ={
status:false
}
}
toggleStatus(){
this.setState({
status:!this.state.status
});
console.log('toggle button handler: '+ this.state.status);
}
render() {
return (
<View style={styles.container}>
{renderIf(this.state.status)(
<Text style={styles.welcome}>
I am dynamic text View
</Text>
)}
<TouchableHighlight onPress={()=>this.toggleStatus()}>
<Text>
touchme
</Text>
</TouchableHighlight>
</View>
);
}
}
a única coisa a ser observada nesse trecho é renderIf
que, na verdade, é uma função que retornará o componente passado a ele com base no valor booleano passado a ele.
renderIf(predicate)(element)
renderif.js
'use strict';
const isFunction = input => typeof input === 'function';
export default predicate => elemOrThunk =>
predicate ? (isFunction(elemOrThunk) ? elemOrThunk() : elemOrThunk) : null;