这些参数在Webpack的HMR中是什么意思

时间:2018-08-16 09:23:14

标签: javascript reactjs webpack-hmr react-hot-loader

为什么要将参数放入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())
    });
}

1 个答案:

答案 0 :(得分:0)

我找到了答案。 第一个参数是观察值 它是一个组件,如果它或其子组件已更改, 回调函数(第二个参数)将被调用, 应该再次需要该组件并删除旧的组件,然后 渲染(用新的替换)到DOM的新组件。