问题遇到的现象和发生背景
这里有登录界面,注册界面,和其他界面,每次运行时都是默认打开登录界面,我怎么能在用户登录之后,记住用户已登录过,下次启动时第一个页面不要是登录界面?
我的解答思路和尝试过的方法
我尝试过在点击登录后,使用AsyncStorage保存用户的登录信息,然后再次启动时,读取出AsyncStorage保存的信息,使用一个state变化控制显示的第一个界面。但是不起作用。
//设置一个state
const [isLogin, setIsLogin] = useState("");
useEffect(() => {
const checkLogin = async () => {
//得到是否登录
const login= await getValue('isLogin');
setIsLogin(login);
};
checkLogin();
}, []);
const Stack = createNativeStackNavigator();
return (
<NavigationContainer>
<Stack.Navigator
screenOptions={{headerShown: false}}
{/*启动时的第一个界面*/}
initialRouteName={isLogin=='login' ? 'BabyScreen' : 'LoginScreen'}>
{/*登录界面*/}
<Stack.Screen name="LoginScreen" component={LoginScreen} />
{/*注册界面*/}
<Stack.Screen
name="RegistrationScreen"
component={RegistrationScreen}
/>
{/*其他界面*/}
<Stack.Screen name="BabyScreen" component={BabyScreen} />
<Stack.Screen name="TreeScreen" component={TreeScreen} />
<Stack.Screen name="GroceryScreen" component={GroceryScreen} />
<Stack.Screen name="PersonalScreen" component={PersonalScreen} />
</Stack.Navigator>
</NavigationContainer>
);