reactjs - 当我重新加载 react-native 应用程序时,异步存储不起作用
问题描述
我到了登录后进入主屏幕和个人资料屏幕的地步,但是如果我重新加载或关闭应用程序然后再次打开它而不是在主屏幕上打开它,它会再次进入登录界面。我尝试AsyncStorage
保存用户,直到我注销然后将其删除,但仍然无法正常工作。有什么帮助吗?
APP.JS
const getToken = async () => {
let value = await AsyncStorage.getItem('token');
if (value !== null) {
setToken(value);
}
};
useEffect(() => {
getToken();
}, []);
return (
<NavigationContainer>
<stateContext.Provider value={{token, setToken}}>
<Stack.Navigator screenOptions={{headerShown: false}}>
{!token ? (
<>
<Stack.Screen name="Login" component={LoginPage} />
<Stack.Screen name="Verification" component={VerificationPage} />
</>
) : (
<>
<Stack.Screen name="Home" component={Home}/>
<Stack.Screen name="Profile" component={Profile} />
</> )}
</Stack.Navigator>
</stateContext.Provider>
</NavigationContainer>
)
登录.JS
const phoneNumberLogin = async (phoneNumber) => {
try {
let res = await axios({
url: `XXXX`,
method: 'post',
headers: {
'Content-Type': 'application/json',
},
});
if (res.status == 200) {
setToken(res.data.firstName);
AsyncStorage.setItem('token', token);
}
return res.data;
} catch (err) {
console.error(err);
}
};
解决方案
尝试在 useEffect 中移动 getToken 函数。我遇到了异步函数和 useEffect 的问题,这个解决方案对我有用。
useEffect(() => {
const getToken = async () => {
let value = await AsyncStorage.getItem('token');
if (value !== null) {
setToken(value);
}
};
getToken();
}, []);
推荐阅读
- python - 如何打开和读取 .nc 文件?
- typescript - 不可分配给类型 'LocationDescriptor
| ((地点:地点 ) => 位置描述符 )' - amazon-web-services - Docker Compose Up 在本地工作,无法部署到 AWS
- r - tidyverse 过时的 CRAN 二进制包
- wordpress - 按元值按wordpress帖子分组
- reactjs - React native navigation.push 没有从参数更新 UI
- tableau-api - Tableau 仪表板中的自定义 SQL 查询能否接受参数中的值列表?
- c# - CK 编辑器从 p 标签中删除空格
- mysql - Mysql查询-月份
- visual-studio - 如何在 Visual Studio 中删除此弹出窗口?