如何解决如何在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 的迁移。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。