我正在使用 React Navigation 在 React-Native 中创建登录页面。
在 Index.js 中,应用会检查用户是否登录。这与异步存储有关。 所以:
我们在 AsyncStorage 和 Logged 项中有 @logged_in 项,在 States 中,然后这将通过一些功能:
If @logged_in == 1 ---> Logged Updates_to 1
If @logged_in == 0 ---> Logged Remains or Updates_to 0
在同一个文件中,我们有这个 Stack Navigator(第三行以后非常重要):
<NavigationContainer>
<Stack.Navigator>
{Logged ? (
<Stack.Screen name="Home" component={Home} />
) : (
<>
<Stack.Screen name="Login" component={Login} />
<Stack.Screen name="ConfirmCode" component={ConfirmCode} />
</>
)}
</Stack.Navigator>
</NavigationContainer>
因此,当 Logged 状态设置为 0 时,Login 和 ConfirmCode 屏幕将位于堆栈导航器中。如果 Logged 状态设置为 1 , Home 屏幕将在堆栈中(总而言之,登录屏幕中的用户输入他们的电话号码并在收到代码后将其放入ConfirmCode,他们将登录并必须重定向到主页屏幕)。
现在,我的主要问题是,当用户确认登录时,如何更新 Index 处的 Logged 状态。 (在 ConfirmCode 屏幕中执行某些操作后,如何安全地重新渲染 Index?)
注意:就像你现在一样,我不能简单地导航到主页屏幕,因为它不会出现在 Stack.Navigator 中,直到用户登录并登录< /strong>索引更新中的状态。