为什么使用 redux-persist 而不是手动将状态持久化到 localStorage?

Why use redux-persist over manually persisting state to localStorage?

另一种提问方式是,如果您真的只想使用保存在 localStorage 中的数据启动您的应用程序(重新水化)并将每个 redux 状态更改保存到 localStorage(持久化)正在使用 redux-persist any better than using your own solution like Dan Abramov explains here

我知道 redux-persist 有很多其他功能,我自己开始使用它是为了能够使用 redux-persist-crosstab(能够处理应用程序之间的变化 运行不同的选项卡),但我想知道将它用于最基本的场景是否有点矫枉过正。特别是因为它更难理解并且有时会做一些有趣的事情,比如随机调用 persist/REHYDRATE

我在这里遗漏了什么明显的东西吗?

redux-persist 的用法取决于应用程序的用例。

首先,让我强调一下 redux-persist

的一些主要功能
  • PersistGate 的用法自动提供 rendering of the components 的延迟,直到状态变为 persisted 以及显示 loading 组件的用法.

  • 基于persistStorepersistReducerpersistObject

  • 等多种类型持久化的自定义函数
  • AutoMerging 来自不同州的 initialStates 基于 shallowdeep 级别

  • 可能是 blacklistingwhitelisting 最重要的特征 reducers

  • shallow 级别 persistencedeep 级别的嵌套持久性 persistence

  • 坚持使用migrations存储不同版本的redux-store

  • 转换以支持 immutablecompressionencrypt过滤器,等等

考虑到您构建的 application 仅用于 development 目的,那么它最多需要 PersistGatepersistStore,可能需要 blacklistwhitelist 的减速器,这仍然是 相当大的工作量 考虑到您知道您的应用程序可能需要什么 .

现在对于 production 级别且易于缩放的应用程序,那么它至少需要我上面列出的 5 / 7 功能。如果没有此模块,您可能需要安装 compressionencryption 等模块,找到一种方法来优雅地存储不同版本的 redux-storeretrievedisplay 可能符合您的要求,以及 redux-store 状态的 rehydration

这还有很多含义,稍后会遇到。因此根据项目的要求,我认为使用这个包来管理 redux-store storage

是有益的