【问题标题】:Protected routes - How do i build signOut where i will need to route from Protected to Unprotected screen受保护的路线 - 我如何构建我需要从受保护的屏幕路由到不受保护的屏幕的signOut
【发布时间】:2020-07-23 10:38:00
【问题描述】:

我正在尝试使用本教程构建受保护的路由器/身份验证流程。 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 
 />

【问题讨论】:

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


    【解决方案1】:

    鉴于您的身份验证解决方案(从Register / Login 移动到Home / Sign Out),请尝试相同的退出方式:将authenticated 状态切换为false。这将导致您的导航器放弃 HomeSign Out 屏幕并改为呈现 RegisterLogin

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      相关资源
      最近更新 更多