Цель состоит в том, чтобы объединить BottomBarNavigator и TopBarNavigator. Я хочу поместить NavigatorB (MaterialTopBarNavigator) внутри компонента (componentA), который представляет собой экран navigatorA (BottomTabNavigator).
Для этого я создаю MaterialTopBarNavigator в своем компоненте и помещаю его в AppContainer для используйте его в моей функции рендеринга.
В componentA:
const TabNavigator = createAppContainer(createMaterialTopTabNavigator({
screen1: {
screen: ComponentB,
},
screen2: {
screen: ComponentB,
}
}))
class ComponentA extends React.Component {
render() {
return (
<View>
//Some Stuff
<TabNavigator />
</View>
)
}
}
Теперь я хочу перейти от компонента B к другому экрану из навигатора, содержащего ComponentA: Component C
const MainTabNavigator = createBottomTabNavigator({
MainScreen1: {
screen: ComponentA
},
MainScreen2: {
screen: ComponentC
}
}
Вот что я попробовал:
В ComponentB:
this.props.navigation.naviguate('MainScreen2', args)
Так что это не работает, потому что props.navigation наследуется от TabNavigator, определенного в ComponentA.
Я искал способ передать props.navigation компонента A в TabNavigator (<TabNavigator args=this.props.navigation>
), но не смог его найти.
Я не уверен, что делаю это правильно, так как я видел людей, советующих не создавать несколько appContainer здесь . Но, поместив TabNavigator непосредственно в MainTabNavigator, поместите ComponentA внутри TabNavigator, и это не то, чего я хочу, потому что я хочу, чтобы "// Some Stuff" делился.
Заранее благодарю за помощь и не стесняйтесь спросить меня более подробную информацию.