无法使用localstorage设置变量

时间:2018-02-20 14:25:26

标签: javascript reactjs

enter image description here我使用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

之后

1 个答案:

答案 0 :(得分:2)

似乎存在时间问题。

如果JSON.stringify一个属性未定义的对象,则会得到一个空数组:

var user = {nom: undefined};
console.log(JSON.stringify( user));

日志" {}"。

这意味着当localstorage最初设置为objuser对象派生的user没有或未定义属性值时,第一个API没有响应。在重新加载页面时说它有用意味着此时obj已更新,localStorage已更新,console.log已更新。

请注意,控制台上记录的对象可以显示在调用console.log( JSON.stringify( localStorage), "debug message"); 后更新的属性值。确切的效果可能难以预测,但如果更新本地存储,并单击现有日志条目上的展开箭头,则可以在某些情况下查看更新的值。

要调试并查看特定时间的本地存储,请在记录之前将其转换为字符串:

    TNSPlayer errorCallback,1
`{"player":{},"error":1,"extra":-1004}`