如何在redux-persist存储中的多个reducer上运行迁移?

问题描述

我在redux-persist商店中有一个减速器的有效redux-persist代码。我提供了reducer的初始状态来存储,并且在reducer的状态结构中每次更改后,我都会更新迁移号(在本示例中为25),并且工作正常。但是我想拥有多个reducer并分别在它们上运行迁移(根据需要对其进行更新)。我也尝试过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}

解决方法

关于这个多减速器迁移问题,我已经尝试了一个星期失败了,这是我找到的解决方案。

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

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

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 的迁移。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...