让 redux-persist 在数据恢复时通知我

Posted

技术标签:

【中文标题】让 redux-persist 在数据恢复时通知我【英文标题】:Make redux-persist to notify me when data are restored 【发布时间】:2021-12-15 01:59:40 【问题描述】:

我有大量数据使用 React persist 存储在本地存储中。我需要知道何时在我的减速器中恢复持久数据(当应用程序加载时)。我需要验证数据版本并且需要生成查找对象(redux-storage 我们无法存储,可能是因为它有大约 65405 条记录/字段)。

无论如何,我想知道 react-persist 何时加载我的数据,以便我可以使用它们。我如何做到这一点?

【问题讨论】:

我猜你可以使用 redux-persist 中的useTransform 在此处查看文档:github.com/rt2zz/redux-persist#transforms 【参考方案1】:

redux-persis中有两个特殊动作:PERSISTREHYDRATE

PERSIST 动作已被调度,然后使用REHYDRATEstore 的保存对象将被加载并注入到当前的 redux 存储中。因此,您可以将它们导入您的reducer 函数并注意persisting 状态。

您需要先对数据进行操作,然后再用持久化器重新水合它们,但我建议采用更简单的方法来处理这种情况。

例如有一个data值(包含65405条记录):

case DATA_ARRIVED_SUCCESSFULLY:
  return 
    ...state,
    data: actin.payload
  

现在,在持久化之前和将有效负载放在data 之前,您可以检查并验证您的数据:

const sampleValidatorData = (myData) => 
  // do something with myData


case DATA_ARRIVED_SUCCESSFULLY:
  return 
    ...state,
    data: sampleValidatorData(actin.payload)
  

现在,您保存的数据(使用持久化器)将是有效的。

【讨论】:

以上是关于让 redux-persist 在数据恢复时通知我的主要内容,如果未能解决你的问题,请参考以下文章

在应用程序启动时重置减速器状态,同时使用 redux-persist 保持状态

为啥 Redux-Persist 不持久化存储

在 iOS 设备上使用 Redux-Persist 和 React Native 时崩溃

在使用 redux-persist 重新水化存储之前加载初始状态的默认值

React通过redux-persist持久化数据存储

反应原生 redux-persist 切片