在我的项目中,我使用 Webpacks HMR 功能来动态导入和呈现 React App 组件,以应对一直有效的新变化。但是,我有另一个文件,我在其中存储了一个 Redux 减速器和一个相应的module.hot.accept
调用,该调用永远只被调用一次。我剥离了几乎所有的依赖项,甚至删除了 Redux 并将其追溯到 Webpack 本身。
我的App.Store.ts
基本上是这样的:
// tslint:disable-next-line:missing-jsdoc
import { AppReducer } from "App.Reducer";
import { createStore, Store } from "redux";
function configureStore(): Store {
const store: Store = createStore(AppReducer);
if (module.hot) {
module.hot.accept(
"App.Reducer",
(): void => {
// tslint:disable-next-line:no-console
console.log("This is only called once and not a second time :(");
}
);
}
return store;
}
export default configureStore;
当我在我的App.Reducer.ts
(无论如何)中更改某些内容时,处理程序只会被调用一次。在文件的后续更改中,调试输出console.log
根本不可见。
这要么是一个更复杂的 Webpack HMR 问题,要么是我对 HMR 的处理有module.hot.accept
误。有关详细信息,请参阅我链接的 MWE。
MWE
可以在此处找到完整的 MWE:https ://gitlab.com/NearAutomata/webpack-hmr-issue 。克隆并运行以下命令:
yarn
yarn run build-main
yarn run build-renderer-hot
在第二次终端运行中
yarn run start-hot