为什么要将参数放入module.hot.accept()
中?如果我们什么也不放,webpack.HotModuleReplacementPlugin
可以工作,但是React组件也会丢失其状态数据。
如果使用react-hot-loader
,则应将参数放入accept
方法中,但我不知道第一个参数的含义,以及为什么
回调应该再次require
并获得default
?
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import {AppContainer} from 'react-hot-loader';
import getRouter from './src/router';
const boot = (elements)=> {
ReactDOM.render(
<AppContainer>
{elements}
</AppContainer>
, document.getElementById('app'));
}
let rs = getRouter();
boot(rs); //first render
// render after source code change
if (module.hot) {
module.hot.accept('./src/router', ()=> {
boot(require('./src/router').default())
});
}
答案 0 :(得分:0)
我找到了答案。 第一个参数是观察值 它是一个组件,如果它或其子组件已更改, 回调函数(第二个参数)将被调用, 应该再次需要该组件并删除旧的组件,然后 渲染(用新的替换)到DOM的新组件。