【发布时间】:2018-12-14 03:57:08
【问题描述】:
我有以下代码,一切看起来都正确,但我无法将语言保存在本地存储中。
state = {
lang: JSON.parse(localStorage.getItem("lang")) || en
};
selectLanguage = e => {
const langKey = e.target.value;
this.setState(
{ lang: languages[langKey] },
localStorage.setItem("lang", JSON.stringify(this.state.lang))
);
};
console.log 消息是
localStorage
Storage {lang: "[object Object]", length: 1}
lang: "[object Object]"
length: 1
__proto__: Storage
我尝试在没有 JSON.parse 的情况下加载保存的语言,但同样的问题。
提前谢谢大家
【问题讨论】:
-
languages的值是多少,是一个大的 JSON 文件还是什么? -
似乎在这里工作正常:jsfiddle.net/yak613/zq3rafxp
-
这是一个很大的 JSON 文件,我正在使用上下文 API 在整个应用程序中进行更改
-
调试,尝试在setState之后添加一个匿名fn作为回调,以确保状态是您在将lang设置为本地存储时所认为的状态。
this.setState( { lang: languages[langKey] }, () => { console.log('STATE', this.state) localStorage.setItem("lang", JSON.stringify(this.state.lang))} ); -
对我来说,我收到一个错误,我无法访问 json 文件,当我尝试从 json 访问任何值时它显示未定义
标签: javascript reactjs object local-storage