如何解决React Native 注销功能无法正常工作
嘿,我正在 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 举报,一经查实,本站将立刻删除。