Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript localStorage中设置的字符串作为对象获取_Javascript_Reactjs_Local Storage - Fatal编程技术网

Javascript localStorage中设置的字符串作为对象获取

Javascript localStorage中设置的字符串作为对象获取,javascript,reactjs,local-storage,Javascript,Reactjs,Local Storage,我已经将JSON.stringized对象保存在localStorage中,但它们是作为无法解析的对象(“[object object]”)检索的 情景: 我做的第一件事是 localStorage.clear(); 我创建了3个对象作为默认值加载到localStorage中。每个对象都是JSON.stringized的,并使用自己的密钥保存在localStorage中。然后,我使用for循环和localStorage.key(I)获取键并检索对象(字符串) 到目前为止还不错。在if声明之外,

我已经将JSON.stringized对象保存在localStorage中,但它们是作为无法解析的对象(“[object object]”)检索的

情景:

我做的第一件事是

localStorage.clear();
我创建了3个对象作为默认值加载到localStorage中。每个对象都是JSON.stringized的,并使用自己的密钥保存在localStorage中。然后,我使用for循环和localStorage.key(I)获取键并检索对象(字符串)

到目前为止还不错。在if声明之外,我有:

var test = localStorage.key(0);
console.log(test);          // logs correct key
test = localStorage.getItem(test);
console.log(test);          // logs string of object
test = JSON.parse(test);
console.log(test);          // logs object correctly
这也会输出到DOM fine。但我一发表评论

// localStorage.clear();
要测试从本地存储的检索,我遇到以下问题:

var test = localStorage.key(0);
console.log(test);          // logs correct key
test = localStorage.getItem(test);
console.log(test);          // logs "[object Object]"
test = JSON.parse(test);    <------ logs Unexpected token o in JSON at position 1
console.log(test);          // code stops above
var test=localStorage.key(0);
console.log(测试);//记录正确的密钥
test=localStorage.getItem(测试);
console.log(测试);//日志“[对象]”

test=JSON.parse(test) 在存储对象之前,需要对其进行字符串化:

localStorage.setItem('key', JSON.stringify(obj));
然后,当检索它时,您只需执行以下操作

JSON.parse(localStorage.getItem('key'));
原因是所有内容都存储为字符串,因此它调用.toString()方法,该方法对于对象返回[object]

编辑
我注意到你说你确实把物体串起来了。我想这将取决于对象的格式,但我没有遇到任何不事先清除存储的问题。

在存储对象之前,您需要对其进行字符串化:

localStorage.setItem('key', JSON.stringify(obj));
然后,当检索它时,您只需执行以下操作

JSON.parse(localStorage.getItem('key'));
原因是所有内容都存储为字符串,因此它调用.toString()方法,该方法对于对象返回[object]

编辑
我注意到你说你确实把物体串起来了。我想这将取决于对象的格式,但我没有遇到任何事先不清除存储的问题。

我肯定您在将对象放置到localstorage时弄错了,最好使用库中的一个将localstorage用作对象存储,或者至少写一个,在你的代码中的任何地方都可以使用它。我会做我需要的任何变通方法,但是没有理由不按照编写的那样工作,是吗?我宁愿让它更简单。制作一个完整的示例,如果不允许,请使用plnkr或jsfiddle--uncomment
localStorage.clear()处于getInitialState。我所指的线首先是28-38,然后是44-50;这可能是因为React.createClass不推荐使用吗?我肯定您在将对象放置到localstorage时弄错了,最好使用库中的一个将localstorage用作对象存储,或者至少编写一个,并在代码中的任何地方使用它。我会做我需要的任何变通方法,但没有理由不按编写的方式工作,是吗?我宁愿让它更简单。制作一个完整的示例,如果不允许,请使用plnkr或jsfiddle--uncomment
localStorage.clear()处于getInitialState。我所指的线首先是28-38,然后是44-50;这可能是因为React.createClass已弃用?