从我目前所经历的情况来看,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 的状态为关闭或为空,则使用 ON 按钮渲染视图。如果 localstorage 打开,则使用 OFF 按钮渲染视图。
我希望能够根据 localStorage 的状态设置此渲染。我试过使用基本的布尔值做同样的事情,它按预期工作。但是,在使用 localStorage 时,有些东西似乎不起作用。
如果我的逻辑完全错误,我不会感到惊讶。
编辑:解释一下,按钮和视图不按应有的方式运行。当灯熄灭且 Storage 中没有任何内容时,该按钮会将 ON 添加到 localStorage,但不会更改视图。如果我刷新页面,页面呈现为 ON,当我点击它时,按钮通过将其关闭来工作。但它只能工作一次,这让我相信 OFF 开关可能有问题。