我正在将令牌存储在本地存储中。问题是我可以通过开发人员工具在浏览器中看到其值,但是当我执行localStorage.getItem('authToken')时,其返回null
我甚至尝试了异步方式,但是它不起作用
Code
//local-storage.js
export const loadAuthToken = () => {
return localStorage.getItem('authToken');
};
//auth.js
const token = localStorage.getItem('authToken');
我应该获得正确的值,但是要为authToken获取空值
答案 0 :(得分:1)
localStorage.setItem('authToken')
和localStorage.getItem('authToken')
是一项asynchronous
任务。
有时您会在let token = localStorage.getItem('authToken')
失败之后立即运行setItem
,因此会得到null,因此请在延迟一段时间后进行getItem
操作。
您可以使用类似这样的内容:
setTimeout(function() {
let token = localStorage.setItem('authToken');
}, 50);
与从本地存储中获取数据类似,例如
setTimeout(function() {
let token = localStorage.getItem('authToken');
}, 50);
或者您可以使用AsyncStorage
代替localstorage
。 AsyncStorage比本地存储更有前景。
await AsyncStorage.getItem('loginStatus')
.then(value => this.setState({ loginStatus: value }))
.catch(e => console.log('err', e));