Реагируйте Навигация 4: сбросить StackNavigator, вложенный в DrawerNavigator - PullRequest
0 голосов
/ 14 апреля 2020

У меня общая проблема с настройкой React Navigation.

У меня есть несколько StackNavigator, вложенных в DrawerNavigator, который находится внутри SwitchNavigator. Да, это беспорядок.

Допустим, у меня есть DrawerNavigator с 3 стеками: HomeStack (домашний маршрут, маршрут профиля, маршрут истории), SearchStack (маршрут списка, подробный маршрут) и CartStack (маршрут просмотра, маршрут PaymentMethod , Маршрут подтверждения).

Если пользователь перемещается по домашнему стеку (Home -> profile -> history), а затем переходит к SearchStack, что, естественно, приводит к CartStack, если я пытаюсь перевести пользователя в HomeStack, Навигатор выводит его на верхний экран стека (в данном примере это история).

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

Я пытался использовать StackActions, чтобы перевести пользователя из маршрута Подтверждение в Дом, но я получаю сообщение об ошибке («Не определен маршрут для ...»).

-

Главное меню навигации (здесь нет проблем при переключении между экранами):

const AppContainer = createAppContainer(
  createSwitchNavigator(
    {
      AuthLoading: LoadingScreen,
      AuthStack: AuthNavigation,
      CoachApp: CoachNavigation,
      StudentApp: StudentNavigation
    },
    {
      initialRouteName: 'AuthLoading'
    }
  )
);

CoachNavigation выглядит примерно так:

export default CoachNavigation = createDrawerNavigator(
  {
    DrawerHome: { screen: HomeStack }, 
    DrawerSearch: { screen: SearchStack }, 
    DrawerCart: { screen: CartStack },
  }
)

Любой совет будет полезен , Заранее спасибо, извините, если мое объяснение не очень хорошее.

1 Ответ

0 голосов
/ 28 апреля 2020

Мне пришлось заменить содержимое / элементы ящика пользовательскими кнопками с помощью onpress => navigate ('parent stack').

https://reactnavigation.org/docs/drawer-navigator/#drawercontent

...