Conformément à DOC :
Les instructions if-else ne fonctionnent pas dans JSX. C'est parce que JSX est juste sucre syntaxique pour les appels de fonctions et la construction d'objets.
Règle de base :
JSX est fondamentalement sucre syntaxique . Après la compilation, les expressions JSX deviennent des appels de fonctions JavaScript ordinaires et sont évaluées en objets JavaScript. Nous pouvons intégrer n'importe quel Expression JavaScript en JSX en l'entourant d'accolades.
Mais seulement des expressions et non des déclarations, ce qui signifie que nous ne pouvons pas mettre directement une déclaration ( if-else/switch/for ) à l'intérieur JSX .
Si vous voulez rendre l'élément de manière conditionnelle, utilisez alors ternary operator
comme ceci :
render() {
return (
<View style={styles.container}>
{this.state.value == 'news'? <Text>data</Text>: null }
</View>
)
}
Une autre option consiste à appeler une fonction de jsx
et mettre tous les if-else
logique à l'intérieur de ça, comme ça :
renderElement(){
if(this.state.value == 'news')
return <Text>data</Text>;
return null;
}
render() {
return (
<View style={styles.container}>
{ this.renderElement() }
</View>
)
}