仅保留Reducer中的某些字段

问题描述 投票:0回答:2

您好,在我们的应用程序中,我们有减速器模式:

{
   data: //here we have our actual data
   fetching: // is it still fetching 
   intact: // has it been 'touched'
   error: //errors if need be
}

此外,由于业务需求,我需要坚持使用ReduxForm,这是它自己的蠕虫......

form: {
    Foobar: {
      values: {

      },
      initial: {

      },
      syncErrors: {

      },
      registeredFields: {

      }
    }
  }
}

正如你可能已经想到的那样坚持除数据之外的任何东西都没有意义,但是Redux-Persist坚持整个减速器。过滤和转换的例子有点......我的感觉乏善可陈,我一直在努力实施。寻找一个例子

javascript reactjs redux redux-form redux-persist
2个回答
1
投票

在redux-persist中可以将白名单/黑名单键列入白名单:

import { createStore } from 'redux'
import { persistStore, persistReducer } from 'redux-persist'
import storage from 'redux-persist/lib/storage'

const persistConfig = {
  key: 'form',
  storage: storage,
  whitelist: ['Foobar'] // only Foobar will be persisted
};

const persistedReducer = persistReducer(persistConfig, rootReducer)

export default () => {
  let store = createStore(persistedReducer)
  let persistor = persistStore(store)
  return { store, persistor }
}

不幸的是白名单/黑名单只接受1级深度,所以我认为你需要使用这样的东西:https://github.com/edy/redux-persist-transform-filter或以一种你可以绕过库的1级深度限制的方式重做你的数据结构。

希望能帮助到你!


1
投票

好吧这样可以使用像@NickHTTPS这样的redux-persist-transform-filter建议:

import createFilter from 'redux-persist-transform-filter';

const saveSubsetFilter = createFilter('form', ['Foo.bar']);

const persistConfig = {
    key: 'form',
    storage,
    whitelist: ['form'],
    transforms: [saveSubsetFilter]
};

persistCombineReducers(persistConfig, { form: formReducer });

奇迹般有效 :)

© www.soinside.com 2019 - 2024. All rights reserved.