我使用localstorage来存储和访问我的函数中的数据,但只有一个变量是存储和可读的,另一个是存储但我不知道为什么我可以存储它(当我重新加载页面时,它正在萎缩)。我在chrome
的调试面板中看到了我的变量存储存储我的数据
localStorage.setItem('user', JSON.stringify(user)); //data in json from API
var obj = {
nom: user.nom,
prenom: user.prenom,
mail: user.mail,
username: user.username,
hasNewsletter : user.hasNewsletter,
coordonnee: user.coodonnee,
id: user.id
};
localStorage.setItem('userDatax', JSON.stringify(obj)); // data of an other API
这部分代码在我的主页
中 this.state ={
nfoUser: JSON.parse(localStorage.getItem('user')),
userDatax: JSON.parse(localStorage.getItem('userDatax'))
}
//and i my render
console.log(this.state.userDatax, "user DATA") //NO DATA TILL RELOAD
console.log(this.state.nfoUser, "user vfo") // DATA
任何想法?
图片显示我的localstorage就在localStorage.setItem
之后答案 0 :(得分:2)
似乎存在时间问题。
如果JSON.stringify一个属性未定义的对象,则会得到一个空数组:
var user = {nom: undefined};
console.log(JSON.stringify( user));
日志" {}"。
这意味着当localstorage最初设置为obj
从user
对象派生的user
没有或未定义属性值时,第一个API没有响应。在重新加载页面时说它有用意味着此时obj
已更新,localStorage
已更新,console.log
已更新。
请注意,控制台上记录的对象可以显示在调用console.log( JSON.stringify( localStorage), "debug message");
后更新的属性值。确切的效果可能难以预测,但如果更新本地存储,并单击现有日志条目上的展开箭头,则可以在某些情况下查看更新的值。
要调试并查看特定时间的本地存储,请在记录之前将其转换为字符串:
TNSPlayer errorCallback,1
`{"player":{},"error":1,"extra":-1004}`