问题描述
嘿,我正在 native-cli 中创建 react-native 应用程序。我正在尝试首次导航 5. 当我进行登录时,我收到令牌并将其存储在 AsyncStorage 中,但需要重新加载应用程序以移动到仪表板,因此为了解决这个问题,我使用了 useContext 及其工作正常,但现在问题是,当我登录应用程序并在它周围移动然后按下注销按钮时它工作得很好但是当我登录应用程序时浏览应用程序然后按后退按钮转到手机的主屏幕而不注销然后当我回来时再次返回应用程序并按注销它清除 AsyncStorge 但不注销应用程序,我需要刷新然后它返回到登录屏幕。
App.js
const App = () => {
const [user,setUser] = useState(false)
const [log,setLog] = useState(0)
const [role,setRole] = useState('seller')
//console.log('App.js-Start')
console.log("app_User:",user);
console.log("app_log:",log);
useEffect(()=>{
getKeysData(dataKeys)
},[])
const dataKeys = ['token','super_user_status','isLoggedIn'];
const getKeysData = async (keys) => {
const stores = await AsyncStorage.multiGet(keys);
//console.log(stores)
// const aData = stores.map(([key,value]) => ({ [key]: value }))
const aData = await Promise.all(stores.map(([key,value]) => ({[key]: value})))
const token = aData[0]['token']
const super_user_status = aData[1]['super_user_status']
const isLoggedIn = aData[2]['isLoggedIn']
console.log('token',token)
console.log('SuperUser',super_user_status)
console.log('Log',isLoggedIn)
//setUser(isLoggedIn)
if(isLoggedIn == 1){
setLog(1)
}
}
return (
<NavigationContainer>
<LoginContext.Provider value={{user,setUser}} >
{ user == false && log==0 ?
<AuthStackScreen />
:
<BuyerDashboardStackScreens />
}
</LoginContext.Provider>
</NavigationContainer>
);
};
export default App;
await axios({
method: 'POST',url: api + 'login/',data: login_Credentials,headers: { 'Content-Type': 'multipart/form-data' }
}).then(async function (response) {
if (response.data.success == true) {
const token = response.data.token.toString();
const super_user_status = response.data.super_user_status.toString();
const isLoggedIn = "1"
//console.log('Logged In and set Storgae')
await AsyncStorage.multiSet([['isLoggedIn',isLoggedIn],['token',token],['super_user_status',super_user_status]])
setUser(true)
setEmail('')
setPassword('')
setPress(false)
}
const logout = () => {
AsyncStorage.clear();
setUser(false);
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)