MapStateToProps больше не вызывается после HMR - PullRequest
0 голосов
/ 10 июня 2019

У меня есть приложение, использующее реагирование, редукс и шалфей с HMR (HotModuleReplacementPlugin) для разработки.После изменения исходного файла мое приложение обновляется автоматически:

[HMR] Updated modules:
log.js?1afd:24 [HMR]  - ./src/app/app.jsx
log.js?1afd:24 [HMR]  - ./src/app/index.jsx
log.js?1afd:24 [HMR] App is up to date.

Но после этого я больше не могу его использовать, потому что mapStateToProps больше не вызывается.Тем не менее, я вижу, что действие было запущено, и изменение распространяется на это состояние (инструменты редуктора dev), но компоненты не получают изменения из нового состояния.

Это можно исправить, перезагрузивцелая страница с F5, но она как бы пропускает точку HMR.

import { createStore, applyMiddleware } from 'redux';
import createSagaMiddleware from 'redux-saga';

import reducer from './reducer';
import sagas from './sagas';

import { composeEnhancers } from './redux-devtools';

// create the saga middleware
const sagaMiddleware = createSagaMiddleware();

// create the store
export const store = createStore(
  reducer,
  composeEnhancers(applyMiddleware(
    sagaMiddleware,
  )),
);

// then run the saga
sagaMiddleware.run(sagas);

if (module.hot) {
  module.hot.accept('./reducer', () => {
    // Quite ugly: this piece of code must use AMD because it will be run in the built
    // environment.
    // eslint-disable-next-line
    require(["./reducer"], function (nextReducer) {
      store.replaceReducer(nextReducer.default);
    });
  });
}

export default store;

Используемые пакеты:

"Reaction-redux": "^ 6.0.1",
"redux-devtools-extension ":" ^ 2.13.8 ",
" redux-saga ":" ^ 1.0.1 ",
" реагировать ":" ^ 16.5.2 ",

...