Предыдущее состояние, полученное редуктором, имеет неожиданный тип. Магазин с redux-persist не работает - PullRequest
0 голосов
/ 07 октября 2019

Я использую redux-immutable и immutable.js в моем хранилище редуксов.

Я получаю сообщение об ошибке, когда пытаюсь внедрить избыточное копирование на мой сайт Gatsby. Он работает должным образом без избыточного сохранения.

Ошибка:

Предыдущее состояние, полученное редуктором, имеет непредвиденный тип. Ожидаемый аргумент, который будет экземпляром Immutable.Collection или Immutable.Record со следующими свойствами: «поиск», «листинг».

Также получим это:

Ошибка типа: inputState.withMutations не является функцией

Следовал учебнику из https://www.npmjs.com/package/redux-persist, но безуспешно

Вот мой store.js файл:

import { createStore, applyMiddleware } from "redux";
import { combineReducers } from "redux-immutable";
import { logger } from "redux-logger";
import createSagaMiddleware from "redux-saga";
import { composeWithDevTools } from "redux-devtools-extension";
import { fromJS } from "immutable";
import { persistStore, persistReducer } from "redux-persist";
import storage from "redux-persist/lib/storage"; // defaults to localStorage for web

import rootReducer from "../reducers/index";
import rootSaga from "../sagas/index";

const persistConfig = {
  key: "root",
  storage
};

const reducers = combineReducers({
  ...rootReducer
});

const persistedReducer = persistReducer(persistConfig, reducers);

const configStore = (initialState = fromJS({})) => {
  const sagaMiddleware = createSagaMiddleware();

  const store = createStore(
    persistedReducer,
    initialState,
    composeWithDevTools(applyMiddleware(sagaMiddleware, logger))
  );

  sagaMiddleware.run(rootSaga);

  if (module.hot) {
    module.hot.accept("../reducers", () => {
      store.replaceReducer(require("../reducers/index").default);
    });
  }

  let persistor = persistStore(store);

  return {
    store,
    persistor
  };
};

const { store, persistor } = configStore();
export { store, persistor };

Вот мой файл Гэтсби wrap-with-provider.js:

import React from "react";

import { PersistGate } from 'redux-persist/integration/react'
import { Provider } from "react-redux";
import { store, persistor } from "./store/index"

export default ({ element }) => (
  <Provider store={store}>
  {/* loading prop can be null, or any react instance, e.g. loading={<Loading />} */}
    <PersistGate loading={null} persistor={persistor}>
      {element}
    </PersistGate>
  </Provider>
);
...