我正在尝试持久化和补充我的redux immutable.js商店但不幸的是我收到此错误this.props.persistor.subscribe is not a function
。我认为我正在导出我的商店,它没有持久性,但是当添加持久性时,它会导致上述错误。以下是我的index.js
:
import React from 'react';
import {render} from 'react-dom';
import './index.css';
import App from './App';
import {Provider} from 'react-redux';
import configureStore from './store/configure-store';
import registerServiceWorker from './registerServiceWorker';
import {persistStore} from 'redux-persist-immutable';
import {saveState} from "./actions/local-storage"
import {throttle} from 'lodash'
import {fromJS} from 'immutable'
import {PersistGate} from "redux-persist/es/integration/react"
const store = configureStore();
const persistor = persistStore(store);
render(
<Provider store={store}>
<PersistGate
loading={() => console.log('looading')}
persistor={persistor}>
<App />
</PersistGate>
</Provider>,
document.getElementById('root')
)
registerServiceWorker();
这是我的configure-store.js
,我正在补水:
import rootReducer from '../reducers'
import {
createStore,
compose,
applyMiddleware
} from 'redux'
import thunk from 'redux-thunk'
import { autoRehydrate } from 'redux-persist-immutable'
import {loadState} from "../actions/local-storage"
const persistedState = loadState()
export default (initialState) => createStore(
rootReducer,
initialState,
autoRehydrate(),
compose(
applyMiddleware(thunk),
window.devToolsExtension ? window.devToolsExtension() : f => f
)
)
在我的index.js
中,我也尝试了以下内容store.subscribe(() => {
var serializedState = JSON.stringify(store.getState());
localStorage.setItem("state", serializedState);
});
render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
)
etc...
和我的configure-store.js
:
import rootReducer from '../reducers'
import {
createStore,
compose,
applyMiddleware
} from 'redux'
import thunk from 'redux-thunk'
import { autoRehydrate } from 'redux-persist-immutable'
import {loadState} from "../actions/local-storage"
export default (initialState) => {
let persistedState
if (localStorage.getItem("state")) {
var serializedState = localStorage.getItem("state");
/* upload changes to server here */
persistedState = JSON.parse(serializedState);
}
createStore(
rootReducer,
persistedState,
// autoRehydrate(),
compose(
applyMiddleware(thunk),
// autoRehydrate(),
window.devToolsExtension ? window.devToolsExtension() : f => f
)
)
}
我认为这应该将state
添加到本地存储,并将状态rehydrate
添加回网络应用。但是,我收到与此Cannot read property 'subscribe' of undefined
相关的以下错误。我不确定会出现什么问题,这是我第一次坚持不懈的经历,但是我也不是真的讨论它是如何完成的,无论是否通过redux-immutable-persist
。