【问题标题】:React.js: Syncing entire state to localStorageReact.js:将整个状态同步到 localStorage
【发布时间】:2014-03-11 14:15:53
【问题描述】:

我想将我的应用程序状态存储在 localStorage 中。是否有回调或状态更改触发的事件?我会用它来打电话给localStorage.state = JSON.stringify(this.state)。可能会使用 0.5 秒限制。

TodoMVC React examples 使用 localStorage 作为存储。但是,它定义了事件处理程序中的保存和删除,例如keydownclick。就我而言,这样做会产生很多样板文件。

【问题讨论】:

    标签: javascript local-storage storage reactjs


    【解决方案1】:

    componentDidUpdate 生命周期方法中,您可以序列化状态:

    componentDidUpdate: function(prevProps, prevState) {
        localStorage.state = JSON.stringify(this.state);
    }
    

    每次组件重新渲染时都会运行该代码(每次道具或状态更改都会发生这种情况)。

    【讨论】:

    • 这适用于单独的 React,对于任何尝试使用 React+Flux 执行此操作的人请记住,您还需要保持 Store 与此同步。在这种情况下,您可以从 localStorage.state 初始化每个 Store 的状态,或者您可以单独缓存每个 Store 的数据。
    • 这正是我遇到的问题@@stackoverflow.com/questions/28375718/…
    • 这是一个 fiddle 在基于 React 的 TODO MVC 示例中的工作。
    • 如果您评估设计选项,下一个重要的点是众所周知的stringify 的性能影响。您可能会考虑使用一些逻辑来减少stringify 调用的数量。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    相关资源
    最近更新 更多