在React中使用LocalStorage吗?

贾森·陈(Jason Chen)

从到目前为止的经验来看,ReactJS似乎并没有以localStorage的状态进行更新。我的代码如下。

var Frr = React.createClass({
getInitialState: function(){
return { lights: localStorage.getItem('state')}
},

switchoff: function(){
this.setState({lights: localStorage.setItem('state', 'off')}); 
},

switchon:function(){
this.setState({lights: localStorage.setItem('state', 'on')}); 
},

render:function(){
if (this.state.lights === 'on'){ return (
<div>
<p>The lights are ON</p>
<input type="submit" value="Switch" onClick={this.switchoff}/>
</div>
);}

if ( (this.state.lights === 'off')|| (!this.state.lights) ){ return (
<div>
<p>The lights are OFF</p>
<input type="submit" value="Switch" onClick={this.switchon}/>
</div>
);}


}
});

简单的应用程序。如果本地存储状态为关闭或为空,则使用“打开”按钮渲染视图。如果启用了本地存储,则使用“关闭”按钮渲染视图。

我希望能够根据localStorage的状态设置此渲染。我尝试使用基本的布尔值做同样的事情,并且它按预期工作。但是,在使用localStorage时,似乎无法正常工作。

如果我的逻辑完全不对,我不会感到惊讶。

编辑:解释一下,按钮和视图不按其应有的方式运行。当指示灯熄灭且“存储”中没有任何内容时,该按钮会将ON添加到localStorage,但不会更改视图。如果刷新页面,页面将显示为“打开”,当我单击该按钮时,按钮将通过关闭而起作用。但是它只能运行一次,这使我相信OFF开关可能存在问题。

尖尖的

.setItem()本地存储功能的回报undefined您需要执行本地存储更新,然后返回新的状态对象:

switchoff: function(){
    localStorage.setItem('state', 'off');
    this.setState({lights: 'off'}); 
},

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在React中使用localStorage

来自分类Dev

无法在React Native App中使用localStorage作为缓存位置

来自分类Dev

在 react-redux 中使用 localstorage setItem/getItem

来自分类Dev

在JS中使用LocalStorage

来自分类Dev

在Javascript中使用LocalStorage

来自分类Dev

在React中使用POST而不使用表单吗?

来自分类Dev

在React中使用this.props与props之间有区别吗?

来自分类Dev

可以在create-react-app中使用装饰器吗?

来自分类Dev

在React中使用Redux商店进行微优化值得吗

来自分类Dev

将在 React Native 中使用 Expo 最差吗?

来自分类Dev

我可以在 React Native 中使用 jquery 吗?

来自分类Dev

React SDK 可以在纯 JavaScript 中使用吗?

来自分类Dev

在多用户中使用localStorage

来自分类Dev

如何在Vue中使用localStorage?

来自分类Dev

在Swift iO中使用Parse的LocalStorage错误

来自分类Dev

如何在Angular中使用LocalStorage

来自分类Dev

我们可以在 React-Native 中使用 Kendo-React UI 吗?

来自分类Dev

如何使用 React Hooks 添加 cookie 或 localstorage

来自分类Dev

可以在不使用钩子的无状态React组件中使用lodash防反跳吗?

来自分类Dev

从sendAsynchronousRequest中使用WebView吗?

来自分类Dev

在Nokogiri中使用split吗?

来自分类Dev

在GNAT中使用libgc吗?

来自分类Dev

在printf中使用%p吗?

来自分类Dev

在SqlAlchemy中使用pysqlcipher吗?

来自分类Dev

在printf中使用%p吗?

来自分类Dev

在Fragmentactivity中使用onclicklistener吗?

来自分类Dev

在ejs中使用React?

来自分类Dev

在React中使用innerHTML

来自分类Dev

在React中使用setinterval