0

我在 redux-persist 商店中有一个 reducer 的工作 redux-persist 代码。我给出了reducer的初始状态来存储,每次reducer的状态结构发生变化后,我都会更新迁移数(在这个例子中是25),它工作正常。但我想拥有多个减速器并分别对它们运行迁移(根据需要更新它们)。我也尝试过 automergelevel2 但它不会更新嵌套状态键中的键。或者是否有任何其他方法代替应用迁移和 automergelevel2。

import rootReducer from "../reducers";
import {persistStore, persistReducer, createMigrate} from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import {initialState} from "../reducers/authentication";
const middleware = [thunk];
const MIGRATION_DEBUG = false;
const migrations = {
    25: state => initialState
};
const persistConfig = {
    key: 'persistedReducer',
    storage: storage,
    version: 25,
    migrate: createMigrate(migrations, {debug: MIGRATION_DEBUG}),
    whitelist: [
        'authentication',
    ]
};

const persistedReducer = persistReducer(persistConfig, rootReducer);

const store = createStore(persistedReducer, composeWithDevTools(applyMiddleware(...middleware)));
const persistor = persistStore(store);
export {persistor, store}
4

1 回答 1

0

关于这个多减速器迁移问题,我已经尝试了一周 - 失败 - 成功,这是我已经达到的解决方案。

创建一个包含在一个“rootReducer”中的reducer 列表的唯一persistingReducer 将不允许您单独迁移任何特定的reducer。

为了将来证明您的任何单个 reducer 上的任何迁移,您应该使用它们自己的 persistedReducer 和 persistConfig 包装它们中的每一个。

import { createStore, combineReducers } from 'react-redux';
import { persistStore, persistReducer } from 'redux-persist';
import { r1Config, reducer1 } from './reducer1';
import { r2Config, reducer2 } from './reducer2';

const allReducers = combineReducers({
  r1: persistReducer(r1Config, reducer1),
  r2: persistReducer(r2Config, reducer2)
});

const store = createStore(allReducers);
const persistor = persistStore(store);

然后,您可以使用他们可以理解的“迁移”对象来管理每个 reducer 的迁移。

于 2021-02-09T10:59:04.680 回答