En réaction ou en réaction native, la façon dont le composant cacher / afficher ou ajouter / supprimer ne fonctionne pas comme dans Android ou iOS. La plupart d'entre nous pensent qu'il y aurait une stratégie similaire comme
View.hide = true or parentView.addSubView(childView)
Mais la façon dont réagissent le travail natif est complètement différente. Le seul moyen d'obtenir ce type de fonctionnalité est d'inclure votre composant dans votre DOM ou de le supprimer du DOM.
Ici, dans cet exemple, je vais définir la visibilité de la vue du texte en fonction du clic sur le bouton.
L'idée derrière cette tâche est de créer une variable d'état appelée état dont la valeur initiale est définie sur false lorsque l'événement de clic sur le bouton se produit, puis sa valeur bascule. Nous allons maintenant utiliser cette variable d'état lors de la création du composant.
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>
);
}
}
la seule chose à remarquer dans cet extrait de code est de savoir renderIf
qui est en fait une fonction qui retournera le composant qui lui est passé en fonction de la valeur booléenne qui lui est passée.
renderIf(predicate)(element)
renderif.js
'use strict';
const isFunction = input => typeof input === 'function';
export default predicate => elemOrThunk =>
predicate ? (isFunction(elemOrThunk) ? elemOrThunk() : elemOrThunk) : null;