this.props.persistor.subscribe不是Redux持久化的函数

时间:2018-02-20 20:08:10

标签: javascript node.js reactjs redux persistence

我正在尝试持久化和补充我的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

0 个答案:

没有答案