Невозможно правильно перемещаться между двумя различными стеками в реагировать на родной и сохранить функциональность - PullRequest
0 голосов
/ 08 ноября 2018

В настоящее время это мои экраны в моем собственном приложении.

Root Nav - (SwitchNavigator)
    Stack A - (BottomTabNavigator)
        Page A
        Page B
    Stack B - (StackNavigator)
        Page C
        Page D

Я пытаюсь перейти на страницу C/D Со страниц A/B Но когда я пытаюсь перейти с помощью this.props.navigation.navigate() Он будет перемещаться правильно, но функциональность истории, например, пролистывание вправо или вызов goBack(), чтобы перейти к предыдущая страница (в другом стеке) не работает. При переходе на страницу D и пролистывании вправо происходит переход на страницу C, а при повторном пролистывании вправо ничего не происходит.

1 Ответ

0 голосов
/ 08 ноября 2018

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

/**
 * User drawer stack
 */
const DrawerStack = DrawerNavigator({
    Home: {screen: HomeStack}, //HomeStack is a StackNavigator
}, {
    contentComponent: DrawerContainer,
    initialRouteName: 'Home',
});

С этим переосмыслите, какой вы хотите свою историю. Если я правильно понял ваш сценарий использования, вы хотите, чтобы A / B делился историей с C / D, я бы сказал, что ваш стек должен выглядеть следующим образом:

Root Nav - (SwitchNavigator)
    Stack B - (StackNavigator)
        Stack A - (BottomTabNavigator)
            Page A
            Page B
        Page C
        Page D

Если по какой-то причине вы не можете этого сделать, то вам нужно будет фиксировать обратные нажатия и пролистывания вручную, чтобы сделать это самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...