使用react-navigation在本地反应中跳转不同的导航器

问题描述 投票:1回答:3

我有3个导航员。 MainNavigator是另外两个(Auth和Activities)的根。根据用户是否已成功登录,我需要将用户从Auth Stack路由到Activities堆栈。我怎样才能做到这一点?我似乎还无法解决这个问题(反应原生的新手,来自Angular)。

这是我用来导航到Activities堆栈的代码行:

        this.props.navigation.navigate('Activities');

验证:

export const AuthNavigator = StackNavigator({
    Login: {
        screen: Login,
    },
    SignUp: {
        screen: SignUp
    },
    Confirm: {
        screen: ConfirmSignUp
    }
}, {
    initialRouteName: 'Login',
    headerMode: 'none',
    animationEnabled: 'true'
});

活动内容:

export const ActivitiesNavigator = TabNavigator({
    ActivityList: {
        screen: ActivityList
    },
    MyActivityList: {
        screen: MyActivityList
    },
    CreateActivity: {
        screen: CreateActivity
    }
}, {
    initialRouteName: 'ActivityList'
});

主导航:

export const MainNavigator = StackNavigator({
    Auth: { screen:  AuthNavigator},
    Activities: { screen: ActivitiesNavigator },
}, {
    initialRouteName: 'Auth',
    headerMode: 'none',
    animationEnabled: 'true'
});
javascript react-native react-navigation
3个回答
2
投票

这实际上有效。睡眠不足让我把'navigate'命令放在另一种方法中。所以在我的App.js文件中我只需要返回MainNavigator,我很高兴:

render() {

    return (
        <MainNavigator/>
    );
}

0
投票

你不需要3个导航员。这是使用React Navigation进行此操作的方法

export const AuthNavigator = StackNavigator({
        Login: {
            screen: Login,
        },
        SignUp: {
            screen: SignUp
        },
        Confirm: {
            screen: ConfirmSignUp
        },
        Main: {
            screen: ActivitiesNavigator
       }
    }, {
        initialRouteName: 'Login',
        headerMode: 'none',
        animationEnabled: 'true'
    });

0
投票

访问StackActions reset:重置操作会擦除整个导航状态,并将其替换为多个操作的结果。

在最新的反应导航版本:3.3.0中,我使用了:在注册或登录时启动Home / Main Flow

import { StackActions, NavigationActions } from 'react-navigation'; const resetAction = StackActions.reset({ index: 0, key: null, // <-this is imp. actions: [ NavigationActions.navigate({ routeName: 'Main' }) ], }); this.props.navigation.dispatch(resetAction);

记住:添加键:null表示主路由为空,不在任何路由上。因此,我们可以自由地导航到任何嵌套堆栈中的路径

key - string或null - 可选 - 如果设置,具有给定键的导航器将重置。如果为null,则根导航器将重置。

© www.soinside.com 2019 - 2024. All rights reserved.