Сохранение только некоторых полей из Редуктора - PullRequest
0 голосов
/ 04 сентября 2018

Привет в нашем приложении у нас есть шаблон редуктора:

{
   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 сохраняет весь редуктор. Примеры фильтрации и трансформации немного ... мне не нравятся, и я изо всех сил стараюсь их реализовать. Ищу пример

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Хорошо, так что это работает с использованием redux-persist-transform-filter, как @NickHTTPS sugested:

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 });

работает как шарм :)

0 голосов
/ 04 сентября 2018

Возможно занести белый / черный список ключей в 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 уровень глубокое ограничение библиотеки.

Надеюсь, это поможет!

...