Я использую React Navigation v5 и имею навигатор по ящикам, чьи экраны представляют собой кучу навигаторов стека.
<AppDrawer.Navigator drawerContent = {({navigation, state}) => <DrawerScreen navigation = {navigation} state = {state}/>}>
<AppDrawer.Screen name = "TodayStack" component = {TodayStackComponent}/>
<AppDrawer.Screen name = "ClientsStack" component = {ClientsStackComponent}/>
<AppDrawer.Screen name = "SettingsStack" component = {SettingsStackComponent}/>
</AppDrawer.Navigator>
В DrawerScreen (это мое собственное переопределение компонента Drawer) в настоящее время он перемещается к каждому элементу ящика следующим образом:
props.navigator.navigate('TodayStack')
Это работает нормально в целом. Однако я также хочу, чтобы он сбрасывал состояние стека при переходе из ящика. Например, у меня может быть 3 сложенных экрана в истории навигации TodayStack. Когда я перехожу к другому элементу ящика, затем снова нажимаю TodayStack, я хочу, чтобы он вернулся к исходному маршруту для навигатора TodayStack.
Любые советы о том, как это сделать?
Но как мне получить доступ к навигатору для этого стека внутри навигатора ящиков?
Где вы размещаете в коде props.navigator.navigate('TodayStack')? У меня та же проблема, за исключением того, что я не могу контролировать, что такое onpress для навигации по drawer.screen. Как мне настроить, какая функция срабатывает, когда пользователь нажимает на sidedrawer?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


попробуйте следующее:
импортировать {CommonActions, useNavigation} из '@react-navigation/native';
затем замените свой код:
props.navigator.navigate('TodayStack')
с
navigation.dispatch(
CommonActions.reset({
index: 0,
routes: [
{ name: 'TodayStack' },
],
})
);
Это отлично сработало. Я читал документы, объясняющие это, но я неправильно понял, каким должен быть параметр routes. :) Спасибо!
Проверьте: reactnavigation.org/docs/navigation-actions/#reset