#react-native #react-navigation #react-navigation-stack #react-navigation-bottom-tab
#react-native #реагировать-навигация #реагировать-навигация-стек #react-navigation-нижняя вкладка #react-навигация #react-navigation-stack
Вопрос:
У меня есть приложение react native, в котором есть навигатор стека и навигатор нижних вкладок. Навигатор нижних вкладок и stack navigator имеют общие экраны между ними. Вот такая структура:
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"
}
}
})
Теперь, если я перейду непосредственно к экрану чтения из навигатора нижней вкладки и перейду к экрану создания изображения в навигаторе стека, когда я нажму кнопку «Назад», я вернусь к экрану по умолчанию, который является экраном изучения?
Итак, каков наилучший подход к решению проблемы? Я знаю, что могу создать еще один навигатор стека и добавить соответствующие экраны. Кроме того, если следовать этому подходу, могу ли я назвать экраны навигатора стека одинаковыми?
Ответ №1:
Я думаю, что для этого не нужно выделять один экран на полужирном стеке и нижней вкладке. Итак, я предлагаю следующее
const ExploreNavigator = createStackNavigator({
Tabs: {
screen: TabsNavigator
},
CreateImage: {
screen: CreateImageScreen
}
})
const TabsNavigator = createBottomTabNavigator({
Explore: {
screen: ExploreScreen,
navigationOptions: {
tabBarLabel: "Explore"
}
},
ReadTab: {
screen: ReadScreen,
navigationOptions: {
tabBarLabel: "Read"
}
}
})
Ответ №2:
я бы сделал это так
const ExploreNavigator = createStackNavigator({
ExplorePrimary: {
screen: ExploreScreen
},
ReadPrimary: {
screen: ReadScreen
},
CreateImagePrimary: {
screen: CreateImageScreen
}
})
const ReadNavigator = createStackNavigator({
ExplorePrimary: {
screen: ExploreScreen
},
ReadSecond: {
screen: ReadScreen
},
CreateImageSecond: {
screen: CreateImageScreen
}
})
const TabsNavigator = createBottomTabNavigator({
ExploreTab: {
screen: ExploreNavigator,
navigationOptions: {
tabBarLabel: "Explore"
}
},
ReadTab: {
screen: ReadNavigator,
navigationOptions: {
tabBarLabel: "Read"
}
}
})
Комментарии:
1. Привет, предположим, если я хочу перейти с ReadScreen на CreateImageScreen, у меня есть два разных маршрута в зависимости от того, откуда я перешел. итак, как я могу решить эту проблему?
2. если вы находитесь на ReadTab: navigation.navigate(‘CreateImageSecond’), если на explore: navigation.navigate(‘CreateImagePrimary’)
3. мой подход хорош, если вы хотите сохранить нижние вкладки на экране создания изображения
4. Привет, итак, в моем случае использования есть 2 сценария: 1. Перейдите с экрана просмотра на экран чтения, чтобы создать imagescreen. 2. Непосредственно перейдите с экрана чтения на createImageScreen. Итак, в вашем случае, как я могу узнать, откуда мне попасть в ReadScreen, а затем соответствующим образом обновить навигатор?