Сброс React Stack Navigator из другого стека - PullRequest
1 голос
/ 02 марта 2020

У меня проблема со сбросом Навигатора стека, когда он находится внутри другого навигатора стека. Вот сценарий:

  1. Пользователь попадает на экран списка книг
  2. Пользователь переходит к экрану «Сведения о книге»
  3. Пользователь переключается на экран настроек через нижнюю навигацию / вкладки
  4. Пользователь переключает учетную запись

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

Я подозреваю, что это может быть достигнуто с помощью свойства 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 после того, как пользователь переключил учетную запись и не Перейдите в Книги.

...