реактивная навигация между appcontainers - PullRequest
0 голосов
/ 28 января 2020

Цель состоит в том, чтобы объединить 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" делился.

Заранее благодарю за помощь и не стесняйтесь спросить меня более подробную информацию.

1 Ответ

0 голосов
/ 29 января 2020

Я нашел способ, используя NavigationService , я создал NavigationService для MainTabNavigator и использовал его, как указано в ComponentB.

...