返回
首页 > 儿童教育

react-hot-loader的用法是什么

时间: 2023-02-01

“react-hot-loader”用于在使用react编写代码时让修改的部分自动刷新;“hot-loader”并不会刷新网页,而是替换修改的部分,可用“npm install --save-dev react-hot-loader”安装。

本教程操作环境:Windows10系统、react17.0.1版、Dell G3电脑。

react-hot-loader的用法是什么

hot loader 是干嘛的呢?引用官网的一句话就是

简单的讲,就是使用 react 编写代码时,能让修改的部分自动刷新。

但这和自动刷新网页是不同的,因为 hot-loader 并不会刷新网页,而仅仅是替换你修改的部分。

安装

首先是安装 react-hot-loader

npm install --save-dev react-hot-loader

另外 hot-loader 是基于 webpack-dev-server,所以还得安装 webpack-dev-server

npm install --save-dev webpack-dev-server

配置

配置 webpack-dev-server

使用 react-hot-loader 时,首先还是要让 webpack-dev-server 打开。

在根目录新建 server.js

var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');
new WebpackDevServer(webpack(config), {
  publicPath: config.output.publicPath,
  hot: true,
  historyApiFallback: true
}).listen(3000, 'localhost', function (err, result) {
  if (err) {
    return console.log(err);
  }
  console.log('Listening at http://localhost:3000/')
});
配置 webpack.config.js
然后在 webpack 的配置文件里添加 react-hot-loader。
打开 webpack.config.js
var webpack = require('webpack');
module.exports = {
  // 修改 entry
  entry: [
    // 写在入口文件之前
    "webpack-dev-server/client?http://0.0.0.0:3000",
    "webpack/hot/only-dev-server",
    // 这里是你的入口文件
    "./src/app.js",
  ],
  output: {
    path: __dirname,
    filename: "build/js/bundle.js",
    publicPath: "/build"
  },
  module: {
    loaders: [
      {
        test: /.jsx?$/,
        exclude: /node_modules/,
        // 在这里添加 react-hot,注意这里使用的是loaders,所以不能用 query,应该把presets参数写在 babel 的后面
        loaders: ['react-hot', 'babel?presets[]=react,presets[]=es2015']
      }
    ]
  },
  // 添加插件
  plugins: [
    new webpack.HotModuleReplacementPlugin()
  ]

使用

首先运行 server.js(当然你可以在 package.json 里面配置,使用 npm start 运行)

node server.js

然后照常使用 webpack

webpack --display-error-details --progress --colors --watch

学习:《react教程》

以上就是react-hot-loader的用法是什么的详细内容

猜你喜欢

版权所有 Copyright©2023 餐饮美食网 版权所有

粤ICP备15109582号

联系邮箱:187348839@qq.com