reactjs – 使用反应样板正确设置redux-persist v5
发布时间:2020-12-15 09:36:55 所属栏目:百科 来源:网络整理
导读:我一直在尝试用 reactboilerplate 3.4.0 框架设置 redux-persist 5.9.1 . 我收到的错误似乎与redux-immutable有关,我无法找出正确的配置. 这是我到目前为止所做的: 1.安装NPM npm i -S redux-persist redux-persist-transform-immutable 的package.json ???
我一直在尝试用
reactboilerplate 3.4.0 框架设置
redux-persist 5.9.1 .
我收到的错误似乎与redux-immutable有关,我无法找出正确的配置. 这是我到目前为止所做的: 1.安装NPM npm i -S redux-persist redux-persist-transform-immutable 的package.json ????“redux-persist”:“^ 5.9.1”, 2.在store.js中设置Redux Persist //store.js import .... (other usual stuff) import { persistStore,persistReducer } from 'redux-persist'; import storageSession from 'redux-persist/lib/storage/session'; import immutableTransform from 'redux-persist-transform-immutable'; const persistConfig = { transforms: [immutableTransform()],key: 'root',storage: storageSession,} const rootReducers = createReducer(); // Using persistReducer not persistCombineReducer because the rootReducer is already returned by combinedReducer from redux-immutable. const persistedReducer = persistReducer (persistConfig,rootReducers) export default function configureStore (initialState = {},history) { // other usual stuffs ... // I modified how store is created using persistedReducer const store = createStore( persistedReducer,// this line used to use createReducer() method fromJS(initialState),composeEnhancers(...enhancers),); const persistor = persistStore(store); return { persistor,store }; // Please note,I have commented out hot reloading of reducers for now. } 3. reducers.js没有变化 4.更新App.js. import 'babel-polyfill'; import React from 'react'; // Added below import { PersistGate } from 'redux-persist/es/integration/react'; // other usual setup // Line below used to define just store but now we are defining persistor and store const { persistor,store } = configureStore(initialState,browserHistory); // Finally,update the render method: const render = () => { ReactDOM.render( <Provider store={store}> <PersistGate persistor={persistor}> <Router history={history} routes={rootRoute} render={ applyRouterMiddleware(useScroll()) } /> </PersistGate> </Provider>,document.getElementById('app') ); }; 仍然没有运气: 错误: 我想我没有正确配置不可变映射.有帮助吗? 解决方法
你做的方式是正确的
documentation.
问题出在这里: const rootReducers = createReducer(); // Using persistReducer not persistCombineReducer because the rootReducer is already returned by combinedReducer from redux-immutable. const persistedReducer = persistReducer (persistConfig,rootReducers) 这个const的rootReducers = createReducer();不应该这样调用,它会触发功能.你应该像const rootReducers = createReducer;或者更好地打电话: const persistedReducer = persistReducer (persistConfig,createReducer) 请参阅documentation,不要调用rootReducer获取触发器函数,而是将其作为变量传递. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |