J'ai un écran de "chat" auquel on peut accéder depuis plusieurs écrans dans mon application React Native. J'essaie d'ajouter un "if statement" avec un "route.params ?" au navigateur de la pile, afin qu'il renvoie l'utilisateur vers l'écran approprié, en fonction de son origine, mais je n'arrive pas à faire exécuter le "if statement".
Voici mon code :
function MainTabScreen ({ navigation, route }){
const didComeFromNextScreen = () => route.params
const didComeFromOtherScreen = () => route.params
const chatChecker = ()=>{
if(route.params?.didComeFromNextScreen){
console.log('It came from NextScreen')
navigation.navigate('NextScreen')
return;
}
if(route.params?.didComeFromOtherScreen){
console.log('It came from OtherScreen')
navigation.navigate('OtherScreen')
return;
}
}
<MainTab.Navigator screenOptions ={{
headerStyle:{
backgroundColor:"#fff" ,
},
gestureEnabled: false,
headerTintColor: 'red',
headerTitleStyle: {
fontWeight: 'bold',
fontSize: height*0.023,
textAlign: 'center',
}
}}
>
<MainTab.Screen name = "NextScreen" component={NextScreen} options= {{
title: '' ,
headerTintColor: '#fff',
headerLeft: null,
headerRight: () => (
<Icon.Button name = "message" size={25} backgroundColor= "#fff" onPress={ () => navigation.navigate('ChatScreen',{
didComeFromNextScreen: true
})}>
</Icon.Button>
}}
/>
<MainTab.Screen name = "ChatScreen" component={ChatScreen} options= {{
title: '' ,
headerTintColor: '#fff',
headerLeft: ()=>(
<Icon.Button name = "arrow-left" size={25} backgroundColor= "#fff" onPress={chatChecker}/>
)
}}
/>
<MainTab.Screen name = "OtherScreen" component={OtherScreen} options= {{
title: '' ,
headerTintColor: '#fff',
headerLeft: null,
headerRight: () => (
onPress={ () => navigation.navigate('ChatScreen',{
didComeFromOtherScreen: true
})}>
}}
/>
</MainTab.Navigator>