当前位置: 首页 > 面试题库 >

在React中使用LocalStorage吗?

太叔栋
2023-03-14
问题内容

从到目前为止的经验来看,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'}); 
},


 类似资料:
  • react-use-localstorage depends on stable v16.8.1~ Access Local Storage using React hooks. Fork it on CodeSandbox How to use it import React from 'react';import ReactDOM from 'react-dom';import useLoca

  • 问题内容: 我正在支持cookie的浏览器(IE以外的任何人)上用localStorage替换cookie。问题是_site.com_和www。site.com存储它们自己的单独的localStorage对象。我认为www被视为一个子域(如果您问我这是一个愚蠢的决定)。如果用户最初在 site.com上并决定输入 www 。下次访问 _site.com_时,将无法访问她的所有个人数据。如何使我的所

  • 和 Flux 类似,Redux 也是需要注册一个回调函数 store.subscribe(listener) 来获取 State 的更新,然后我们要在 listener 里面调用 setState() 来更新 React 组件。 Redux 官方提供了 react-redux 来简化 React 和 Redux 之间的绑定,不再需要像 Flux 那样手动注册/解绑回调函数。 接下来看一下是怎么做到

  • 问题内容: 我正在阅读官方React网站上的教程。在有关生命周期方法的示例中,在componentDidMount方法下,将timerID设置为setInterval函数。 我的问题是,即使timerID已初始化,也从未在整个应用程序中调用过,在不显式调用应用程序中任何地方的timerID的情况下,应用程序如何工作。这是下面的代码。 问题答案: 是一个非零的数字值,它标识对的调用所创建的计时器。该

  • 问题内容: 我目前正在使用reactjs构建一个单页面应用程序。我读到许多不使用localStorage的原因是由于XSS漏洞。由于React避开了所有用户输入,现在使用localStorage是否安全? 问题答案: 在大多数现代单页应用程序中,我们确实必须将令牌存储在客户端的某个位置(最常见的用例-在页面刷新后使用户保持登录状态)。 共有2个可用选项:Web存储(会话存储,本地存储)和客户端co

  • 我正在学习如何通过在线教程做出反应。 这是一个关于使用React路由器的基本示例: 与我的应用程序组件: 但是,我在使用IndexRoute时遇到问题,因为它没有显示任何内容,所以我在npm上搜索react router dom v4模块,但里面没有IndexRoute。相反,它使用的是: 那么,我如何渲染2组件为1路径?