受保护的路由-如何在需要从受保护的屏幕路由到不受保护的屏幕的地方建立SignOut

时间:2020-04-10 16:20:37

标签: react-native react-native-navigation react-navigation-v5

我正在尝试使用本教程构建“受保护的路由器/身份验证流”。 https://reactnavigation.org/docs/auth-flow/

我的身份验证流的呈现功能如下:

    render() {
        const Stack = createStackNavigator();
        return (
            <>
                {this.state.loading ?
                    <>
                        <View><Text>Loading</Text></View>
                    </>
                    :
                    < >
                        <Stack.Navigator>
                            {this.state.authenticated ?
                                <>
                                    <Stack.Screen name="Home" component={Home} />
                                    <Stack.Screen name="SignOut" component={SignOut} />
                                </>
                                :
                                <>
                                    <Stack.Screen name="Register" component={Register} />
                                    <Stack.Screen name="Login" component={Login} />
                                </>
                            }
                        </Stack.Navigator>
                    </>
                }

            </>


        )
    }

登录并想注销后,如何导航回到“注册”或“登录”屏幕?基于此流程,由于我已经通过身份验证,因此它们都不在我的导航堆栈中。

从我的退出屏幕上,如果我尝试执行上述操作,则会收到错误消息。我该如何解决?

<Button
     title="Go to Register"
     onPress={() => navigate('Register')} //ERROR DUE TO SCREEN NOT FOUND 
 />

1 个答案:

答案 0 :(得分:0)

鉴于您的身份验证解决方案(从Register / Login移至Home / Sign Out),请尝试相同的注销方法:将authenticated状态切换为false。这将使您的导航器放下HomeSign Out屏幕,并渲染RegisterLogin