Redux сохранится не горячая перезагрузка - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь сделать redux-persist горячая перезагрузка.

Вот инструкции:

https://github.com/rt2zz/redux-persist/blob/master/docs/hot-module-replacement.md

Я пробовалчтобы сделать это так, и он не загружается в горячем режиме.

Я установил отладчик и console.log внутри функции accept, но он не ломается и не регистрируется (не уверен, что веб-пакет может их игнорировать или удалять):

export default () => {
  if (module.hot) {
    debugger; // eslint-disable-line
    module.hot.accept('./reducers', () => {
      debugger; // eslint-disable-line
      // This fetch the new state of the above reducers.
      const nextRootReducer = require('./reducers').default; // eslint-disable-line
      console.log(nextRootReducer);
      store.replaceReducer(
        persistReducer(persistConfig, nextRootReducer),
      );
    });
  }
  return { store, persistor };
};

Это моя полная конфигурация:

/* globals require */
import { createStore as reduxCreateStore, applyMiddleware } from 'redux';
import createSagaMiddleware from 'redux-saga';
import { composeWithDevTools } from 'redux-devtools-extension';
import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import rootReducer from './reducers';
import rootSaga from './sagas/sagas';


const sagaMiddleware = createSagaMiddleware();

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

const persistedReducer = persistReducer(persistConfig, rootReducer);

const createStore = () => reduxCreateStore(
  persistedReducer,
  composeWithDevTools(
    applyMiddleware(sagaMiddleware),
  ),
);

const store = createStore();
const persistor = persistStore(store);

sagaMiddleware.run(rootSaga);

export default () => {
  if (module.hot) {
    debugger; // eslint-disable-line
    module.hot.accept('./reducers', () => {
      debugger; // eslint-disable-line
      // This fetch the new state of the above reducers.
      const nextRootReducer = require('./reducers').default; // eslint-disable-line
      console.log(nextRootReducer);
      store.replaceReducer(
        persistReducer(persistConfig, nextRootReducer),
      );
    });
  }
  return { store, persistor };
};

Должен ли я сделать что-то по-другому?

Я использую gatsby, если это имеет какое-либо значение без какой-либо соответствующей модификации конфигурации по умолчанию.

...