当前位置:首页 > 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 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

理解如何react

理解如何react

理解React的核心概念 React是一个用于构建用户界面的JavaScript库,专注于通过组件化开发提高代码的可维护性和复用性。其核心思想包括虚拟DOM(Virtual DOM)和单向数据流,能够…

react 如何debug

react 如何debug

React 调试方法 使用 React Developer Tools React Developer Tools 是浏览器扩展,支持 Chrome 和 Firefox。安装后,可以在开发者工具中查看…