Защищенные маршруты - Как мне создать signOut, где мне нужно будет перейти от защищенного к незащищенному экрану - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь создать защищенный маршрутизатор / Auth Flow, используя это руководство. 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 голосов
/ 10 апреля 2020

Учитывая ваше решение для аутентификации (переход от Register / Login к Home / Sign Out), попробуйте то же самое для выхода из системы: переключите состояние authenticated в false. Это заставит ваш навигатор сбросить экраны Home и Sign Out и отобразить вместо них Register и Login.

...