Управление несколькими навигаторами (навигатор по стеку и навигатор по вкладкам) в интерактивной навигации

У меня есть собственное приложение для реагирования, в котором есть навигатор стека и навигатор нижних вкладок. Навигатор нижних вкладок и навигатор стека имеют общие экраны между собой. Вот структура:

const ExploreNavigator = createStackNavigator({
    Explore: {
        screen: ExploreScreen
    },
    Read: {
        screen: ReadScreen
    },
    CreateImage: {
        screen: CreateImageScreen
    }
})




const TabsNavigator = createBottomTabNavigator({
    ExploreTab: {
        screen: ExploreNavigator,
        navigationOptions: {
            tabBarLabel: "Explore"
        }
    },
    ReadTab: {
        screen: ReadScreen,
        navigationOptions: {
            tabBarLabel: "Read"
        }
    }
})

Теперь, если я перейду непосредственно к экрану чтения из навигатора нижней вкладки и перейду к экрану CreateImage навигатора стека, когда я нажму кнопку возврата, я вернусь к экрану по умолчанию, который является экраном исследования?

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


person Subham Agarwala    schedule 03.10.2020    source источник


Ответы (2)


Я думаю, что для этого не нужно держать один экран в жирном стеке и на нижней вкладке. Итак, я предлагаю это

const ExploreNavigator = createStackNavigator({
    Tabs: {
        screen: TabsNavigator
    },
    CreateImage: {
        screen: CreateImageScreen
    }
})




const TabsNavigator = createBottomTabNavigator({
    Explore: {
        screen: ExploreScreen,
        navigationOptions: {
            tabBarLabel: "Explore"
        }
    },
    ReadTab: {
        screen: ReadScreen,
        navigationOptions: {
            tabBarLabel: "Read"
        }
    }
})
person Anhdevit    schedule 03.10.2020

person    schedule
comment
Привет, предположим, что если я хочу перейти от ReadScreen к CreateImageScreen, у меня есть два разных имени маршрута в зависимости от того, откуда я перешел. Итак, как я могу решить эту проблему? - person Subham Agarwala; 03.10.2020
comment
если вы находитесь на ReadTab: navigation.navigate ('CreateImageSecond'), если вы находитесь на explore: navigation.navigate ('CreateImagePrimary') - person Nikhil bhatia; 03.10.2020
comment
мой подход хорош, если вы хотите сохранить нижние вкладки на экране создания изображения - person Nikhil bhatia; 04.10.2020
comment
Привет, в моем случае есть 2 сценария: 1. Переход от экрана исследования к экрану чтения на CreateImageScreen. 2. Непосредственно переходите от экрана чтения к createImageScreen. Итак, в вашем случае, как я могу узнать, откуда мне попасть в ReadScreen, а затем соответствующим образом обновить навигатор? - person Subham Agarwala; 06.10.2020