简体   繁体   English

Redux如何持久存储到本地存储

[英]How persist redux store to localstorage

can't persist store to localstorage, using redux-persist. 不能使用redux-persist将存储持久化到本地存储。 Have error: 有错误:

Store does not have a valid reducer. 商店没有有效的减速器。 Make sure the argument passed to combineReducers is an object whose values are reducers. 确保传递给CombineReducers的参数是一个其值为减速器的对象。

Help pls to configure store or are there another ways 帮助请配置存储或还有其他方法

import {applyMiddleware, compose, createStore} from "redux";
import thunk from "redux-thunk";
import {createLogger} from "redux-logger";
import rootReducer from "../reducer/index";
import {loadState, saveState} from "../utils";
import { persistStore, persistCombineReducers } from 'redux-persist';
import storage from 'redux-persist/lib/storage';

const config = {
    key: 'root',
    storage,
}

const reducer = persistCombineReducers(config, rootReducer)


function configureStore(initialState) {
    let createStoreWithMiddleware;

const middleware = process.env.__DEV__
    ? applyMiddleware(thunk, createLogger())
    : applyMiddleware(thunk);

createStoreWithMiddleware = compose(
    middleware,
);

const store = createStoreWithMiddleware(createStore)(reducer, initialState);

let persistor = persistStore(store)

if (module.hot) {
    module.hot
        .accept('../reducer', () => {
            const nextRootReducer = require('../reducer/index');
            store.replaceReducer(nextRootReducer);
        });
}


store.subscribe(() => {
    saveState(store.getState().albums)
});

return {store, persistor};

}

export default configureStore

As the error message is already telling - you have to pass an object to the persistCombineReducers method. 由于错误消息已经在告诉您-您必须将一个对象传递给persistCombineReducers方法。

Please have a look at the following example . 请看下面的例子 (Some of your code is commented there to have a minimal example.) (您的某些代码在此处被注释为一个最小的示例。)

So the code of your combined reducer could be like this: 因此,您的组合reducer的代码可能是这样的:

const reducer = persistCombineReducers(config, {root: rootReducer});
const store = createStore(reducer, initialState);

If you're only having one reducer it would be better to use: 如果您只有一个减速器,最好使用:

const reducer = persistReducer(config, rootReducer);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM