Правильно ли я обрабатываю этот маршрут.параметры при использовании вложенного навигатора?

#javascript #android #react-native #react-navigation-v5 #routeparams

#язык JavaScript #Android #реагировать-родной #реагировать-навигация-v5 #параметры маршрута

Вопрос:

В моем приложении у меня есть модал, который должен появиться, если приложение обнаружит, что пользователь пришел с «завершающего экрана», кроме этого, модал не должен появляться.

У меня есть «Навигатор вкладок ящика», вложенный в мой «Навигатор основных вкладок».

Когда я перехожу с завершающего экрана на свой рабочий стол, появляется модальное значение, потому что didComeFromFinishingScreen == true

Когда я перехожу к любому из экранов, содержащихся в ящике, а затем возвращаюсь на рабочий стол, модальное значение снова появляется, потому что didComeFromFinishingScreen все еще возвращает значение true.

Я считаю, что это связано с тем, как я обрабатываю маршрут.параметры.

Ниже приведен код, который я использую для обработки маршрута.параметры:

Код внутри завершающего экрана, делающий модальное первоначальное переключение

 const checkConfirm = async () =gt; {  return await client_instance.stop_running().then(  ()=gt;navigation.navigate('Home', {  didComeFromFinishingScreen: true,   })  )  }     ...  lt;TouchableOpacity  onPress={checkConfirm}   gt;  lt;Textgt;Stop Runninglt;/Textgt;  lt;/TouchableOpacitygt;  

Проверка, если didComeFromFinishingScreen == true внутри рабочего стола

 if(route.params?.didComeFromFinishingScreen){  if(isFocused){  setModalVisible(true)   } }   return()=gt;{  console.log('cleanup function is closing modal')  if(isFocused){  setModalVisible(false)  }  }  

Переход от главного экрана к одному из экранов внутри ящика

 lt;DrawerItem  icon={({color, size }) =gt; (  lt;Icon   name="account-outline"  color={color}  size={height*0.032}  /gt;  )}  label= {i18n.t('prof')}  onPress={()=gt;{navigation.navigate('ProfileStackScreen',  {didComeFromFinishingScreen: false}  )}} /gt;  

Navigating back to the HomeScreen from any of the screens in the Drawer

 lt;DrawerItem  icon={({color, size }) =gt; (  lt;Icon   name="home-outline"  color={color}  size={height*0.032}  /gt;  )}  label= {i18n.t('home')}  onPress={()=gt;{navigation.navigate('HomeDrawer', {  didComeFromFinishingScreen: false})  }} /gt;