У меня проблема со сбросом Навигатора стека, когда он находится внутри другого навигатора стека. Вот сценарий:
- Пользователь попадает на экран списка книг
- Пользователь переходит к экрану «Сведения о книге»
- Пользователь переключается на экран настроек через нижнюю навигацию / вкладки
- Пользователь переключает учетную запись
Когда пользователь переключает учетную запись, мне нужно очистить стек навигации книг, чтобы переходить обратно в стек книг через нижнюю вкладку навигации не отображаются детали экрана / книги, которые больше не принадлежат активной учетной записи.
Я подозреваю, что это может быть достигнуто с помощью свойства target
, я просто не уверен, что кормить его. В документации говорится, что это ключ навигатора, который содержит маршрут (https://reactnavigation.org/docs/navigation-actions/#goback).
this.props.navigation.dispatch({
target: ???, <-- how can I point this to the Books stack?
...CommonActions.reset({
index: 1,
routes: [
{ name: 'book-list' }
]
})
});
Однако, введите target: 'books'
, который является ключом на вкладке Книги. Навигатор выдает следующую ошибку:
The action 'RESET' with payload '{"index":1,"routes":[{"name":"book-list"}]}' was not handled by any navigator. If you are trying to navigate to a screen, check if the screen exists in your navigator.
Это структура навигации:
NavigationContainer
--Tab.Navigator
----Tab.Screen (Books)
------Stack.Navigator
--------Stack.Screen (Book List)
--------Stack.Screen (Book Detail)
----Tab.Screen (Settings)
------Stack.Navigator
--------Stack.Screen (Settings Page)
В идеале, я бы хотел сбросить стек навигатора Books после того, как пользователь переключил учетную запись и не Перейдите в Книги.