如何在React Native中从自定义导航器导航到createBottomTabNavigator?

时间:2019-03-05 10:13:41

标签: react-native react-native-android react-navigation

我有一个自定义导航器,因为我想使用向后滑动手势返回上一个屏幕。下面是调用导航器的主文件的代码。

const MainSwipeStack = () => {
    return(
        <Navigator>
            <Route name="LoggedOutHome" component={LoggedOutHome} />
            <Route name="SignUp" component={SignUp} />
            <Route name="SignupUsername" component={SignupUsername} />
            <Route name="Login" component={Login} /> 
        </Navigator> 
    );
}

export default createSwitchNavigator({
    SwipeStack: {screen: MainSwipeStack},
    TabHolder: {screen: TabHolder}
}, {
    initialRouteName: 'SwipeStack',
    headerMode: 'none',
});

下面是Navigator.js代码的链接。 (我没有在这里添加代码,因为这是一个很长的代码。)

https://gist.github.com/shubham6996/a4197d2d0b664d4aabe01091cac6c91e

然后TabHolder带我到有createBottomTabNavigator的屏幕。

因此,现在我无法从Login屏幕导航到TabHolder堆栈。

如何从自定义导航器中的Login导航到TabHolder堆栈?

1 个答案:

答案 0 :(得分:1)

似乎没有导航道具,

尝试

export default withNavigation(Login);

在登录时可以导入

import {withNavigation} from 'react-navigation'

未在导航器中直接使用的组件默认情况下没有导航道具。

所以您需要像这样通过普通道具传递它,

<Login navigation={this.props.navigation} 

但是在堆栈中,我们没有导航道具,所以我们不能像这样通过(如果有道具的话,则为idk...。)

因此替代选项是withNavigationwithNaviagtionFocus,如上所示

找到有关withNavigation

的详细信息