【问题标题】:How can I use redux persist for only one reducer not for navigation reducer in my react native application?如何在我的反应原生应用程序中仅将 redux persist 用于一个减速器而不用于导航减速器?
【发布时间】:2017-02-03 06:29:57
【问题描述】:

我正在使用 Redux persist 为 reducer 持久化我的 store。我的应用程序有两个归约器 Navigation 和 User Reducer。我只想保留用户状态,但我必须根据 redux persist 的这种语法来保留这两种状态。

          import {persistStore, autoRehydrate} from 'redux-persist'
          const store = createStore(reducer, undefined, autoRehydrate())
          persistStore(store)

我在create store中传入的reducer是combine reducers的对象。

问题: 我遇到的问题是当我退出我的应用程序时,由于导航状态现在仍然存在,我的应用程序打开了我退出应用程序的同一页面。

我在我的应用中使用带有 redux 的导航实验,并且只想保留用户状态。

【问题讨论】:

    标签: react-native redux


    【解决方案1】:

    redux-persist v5

    PersistConfig中设置黑名单/白名单,在persistCombineReducers中使用(第1个参数):

    const persistConfig = {
      key: 'root',
      blacklist: ['navigation'],
      storage,
    }
    
    const reducer = persistCombineReducers(persistConfig , reducers)
    

    redux-persist v4

    persistStore 可以有一个可选的配置对象作为第二个参数。在 config 对象中,您可以定义要忽略的 reducer 黑名单,或要包含的 reducer 白名单(并忽略其余部分)。两者都接受一组 reducer 的键名。

    您可以将navigation(或您所称的任何名称)reducer 列入黑名单:

    persistStore(store, { blacklist: ['navigation'] })
    

    【讨论】:

    • 是否可以将特定减速器中的特定字段列入黑/白名单?假设我想将我的 App reducer 列入白名单,但在其中我只想将用户电子邮件列入白名单?
    • 实际上我认为要做我想做的事,我应该专门为持久化字段创建另一个减速器
    • 黑名单和白名单接受reducer名称。您可以使用 transform filter 在存储之前从减速器状态中删除属性。
    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 2021-01-13
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多