我正在尝试为一个项目制作一个快速的样板,但在重新加载页面时遇到了一个问题。
我的代码中有这段代码app.js
:
import * as d3 from 'd3'
import { Hello } from './component'
import css from './styles.css'
function Greetings( name ) {
d3.select('body')
.append('h1')
.html(Hello(name))
}
Greetings('John')
// HMR live reload
if (module.hot) {
module.hot.accept();
}
当我启动页面时,我可以看到H1
添加到 DOM 中,但是当我进行更改时(例如Greetings
to Marie的参数),它不会更新当前页面,而是添加一个新元素等等。
所以我在我的 DOM 中有:
<h1>Hello John</h1>
<h1>Hello Marie</h1>
代替
<h1>Hello Marie</h1>
我真的不知道热重载的幕后发生了什么,但似乎它并没有更新整个页面!
任何帮助将不胜感激!
顺便说一句,这是我的 webpack.config 文件:
var path = require('path')
var webpack = require('webpack')
module.exports = {
entry : [
'webpack-hot-middleware/client',
'./src/app.js'
],
output: {
path: path.join(__dirname, '/dist'),
publicPath: '/',
filename: 'app.bundle.js'
},
module: {
rules: [
{
test: /\.css$/,
use: [
{ loader: "style-loader" },
{ loader: "css-loader" }
]
},
{
test: /\.js$/,
use : [
{
loader : 'babel-loader',
options: {
presets: ['env']
}
}
]
},
]
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin()
]
}