簡體   English   中英

使用react-navigation在react native中的不同導航器之間跳轉

[英]Jumping between different navigators in react native using react-navigation

我有3個導航器。 MainNavigator是其他兩個(Auth和Activity)的根。 根據用戶是否已成功登錄,我需要將用戶從“身份驗證”堆棧路由到“活動”堆棧。 我怎樣才能做到這一點? 我似乎還不能弄清楚(來自Angular的React-native新手)。

這是我用來導航到“活動”堆棧的代碼行:

        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'
});

這實際上有效。 睡眠不足使我將“ navigate”命令置於另一種方法中。 所以在我的App.js文件中,我只需要返回MainNavigator就可以了:

render() {

    return (
        <MainNavigator/>
    );
}

您不需要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'
    });

訪問StackActions reset:reset操作將擦除整個導航狀態,並將其替換為若干操作的結果。

在最新的反應導航版本:3.3.0中,我已使用:在注冊或登錄時啟動主流程/主流程

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表示主路由將為null,而不是任何路由。 因此,我們可以自由導航到任何嵌套堆棧中的路線

key-字符串或null-可選-如果設置,具有給定鍵的導航器將重置。 如果為null,則根導航器將重置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM