React.js:将整个状态同步到 localStorage
Posted
技术标签:
【中文标题】React.js:将整个状态同步到 localStorage【英文标题】:React.js: Syncing entire state to localStorage 【发布时间】:2014-03-11 14:15:53 【问题描述】:我想将我的应用程序状态存储在 localStorage
中。是否有回调或状态更改触发的事件?我会用它来打电话给localStorage.state = JSON.stringify(this.state)
。可能会使用 0.5 秒限制。
TodoMVC React examples 使用 localStorage 作为存储。但是,它定义了事件处理程序中的保存和删除,例如keydown
和click
。就我而言,这样做会产生很多样板文件。
【问题讨论】:
【参考方案1】:在componentDidUpdate
生命周期方法中,您可以序列化状态:
componentDidUpdate: function(prevProps, prevState)
localStorage.state = JSON.stringify(this.state);
每次组件重新渲染时都会运行该代码(每次道具或状态更改都会发生这种情况)。
【讨论】:
这适用于单独的 React,对于任何尝试使用 React+Flux 执行此操作的人请记住,您还需要保持 Store 与此同步。在这种情况下,您可以从 localStorage.state 初始化每个 Store 的状态,或者您可以单独缓存每个 Store 的数据。 这正是我遇到的问题@@***.com/questions/28375718/… 这是一个 fiddle 在基于 React 的 TODO MVC 示例中的工作。 如果您评估设计选项,下一个重要的点是众所周知的stringify
的性能影响。您可能会考虑使用一些逻辑来减少stringify
调用的数量。干杯!以上是关于React.js:将整个状态同步到 localStorage的主要内容,如果未能解决你的问题,请参考以下文章