当前位置:首页 > React

react 实现热更新

2026-01-27 09:01:21React

实现 React 热更新(HMR)

热更新(Hot Module Replacement)允许在运行时替换、添加或删除模块,而无需完全刷新页面。React 结合 Webpack 或 Vite 可以轻松实现这一功能。

使用 Webpack 配置 HMR

确保项目已安装 webpack-dev-serverreact-refresh 相关依赖:

npm install --save-dev @pmmmwh/react-refresh-webpack-plugin react-refresh webpack-dev-server

webpack.config.js 中配置:

react 实现热更新

const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');

module.exports = {
  mode: 'development',
  devServer: {
    hot: true,
  },
  plugins: [
    new ReactRefreshWebpackPlugin(),
  ],
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            plugins: ['react-refresh/babel'],
          },
        },
      },
    ],
  },
};

使用 Vite 配置 HMR

Vite 默认支持 HMR,无需额外配置。确保项目使用 vite-plugin-react(Vite 2.x)或 @vitejs/plugin-react(Vite 3.x+):

npm install --save-dev @vitejs/plugin-react

vite.config.js 中:

react 实现热更新

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
});

验证 HMR 是否生效

启动开发服务器后,修改组件代码并保存。页面应自动更新,且状态(如 React 组件的 useState)不会丢失。

自定义 HMR 行为

对于特定模块,可通过 module.hot API 手动处理更新逻辑:

if (module.hot) {
  module.hot.accept('./MyComponent', () => {
    // 自定义更新逻辑
  });
}

注意事项

  • 仅适用于开发环境,生产环境需禁用。
  • 状态保留依赖 react-refresh,确保 Babel 或 SWC 正确配置。
  • 复杂状态(如 Redux)可能需要额外处理以避免意外行为。

标签: react
分享给朋友:

相关文章

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。 con…

如何启动react

如何启动react

安装Node.js 确保系统已安装Node.js(建议使用LTS版本),可通过官网下载并安装。安装完成后,在终端运行以下命令验证版本: node -v npm -v 创建React项目 使用官方工具…

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

react如何清理

react如何清理

清理 React 项目的方法 清理未使用的依赖项 运行 npm prune 或 yarn install --production 可以移除 node_modules 中未在 package.json…

react 如何精通

react 如何精通

掌握核心概念 深入理解React的基础概念,包括组件(函数组件与类组件)、状态(useState)、生命周期(useEffect)、Props传递、虚拟DOM与Diff算法。通过官方文档或《React…

如何读react源码

如何读react源码

理解React源码的结构 React源码托管在GitHub上,主要分为几个核心模块:react、react-dom、react-reconciler等。react包包含核心API和组件逻辑,react…