#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;