2 votes

Ajout d'une instruction if à un navigateur de piles en React Native

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>

0voto

Adam Katz Points 1595

Je ne sais pas pourquoi vous avez créé ces fonctions, mais les fonctions seront toujours vraies et cela ne fonctionnera pas.

const didComeFromNextScreen = () => route.params
const didComeFromOtherScreen = () => route.params

actualiser pour

const didComeFromNextScreen = route.params
const didComeFromOtherScreen = route.params

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X