J'essaye de rendre le headerRight conditionnellement basé sur un param de navigation. J'essaye actuellement ceci dans les options de navigation statiques. Voici mon code, mais rien est rendu à l'écrancomment effectuer un rendu conditionnel dans l'en-tête du navigateur de pile native de réaction?
static navigationOptions = ({navigation}) => ({
headerRight :() => {
if (navigation.state.params.user.following) {
return (
<TouchableOpacity
onPress={() => this.followUser()}>
<Icon2 name="ios-person-add-outline" size={35} />
</TouchableOpacity>
)} else {
return (
<TouchableOpacity
onPress={() => this.unfollowUser()}>
<Icon name="user-times" size={20} />
</TouchableOpacity>
)}
},
})
Cela peut-il être fait ou ai-je besoin d'utiliser un en-tête personnalisé ici?
Toute aide serait grandement appréciée! Merci!
Solution:
supprimer la fonction anonyme et mettre en œuvre la syntaxe conditionnelle recommandée par soutot
static navigationOptions = ({navigation}) => ({
headerRight : navigation.state.params.otherUser.following ?
(<TouchableOpacity
onPress={() => this.followUser()}>
<Icon2 name="ios-person-add-outline" size={35} />
</TouchableOpacity>)
:
(<TouchableOpacity
onPress={() => this.unfollowUser()}>
<Icon name="user-times" size={20} />
</TouchableOpacity>)
})
Quelles lignes montre jeton inattendu? Avez-vous vérifié si vous passez le paramètre 'user' avant de déclencher la navigation? –
Désolé, cela aurait dû être édité car il ne lance pas de jeton inattendu maintenant. Au lieu de cela, il ne rend rien. Edité pour refléter cela. – beddow