React 项目热更新失效问题的解决方案和产生的原因

背景和意义

在修复React项目热更新失效的问题时,经过一系列问题排查和依赖升级,最终成功修复了问题并为后续开发规避了类似的问题。

依赖升级

Vite版本升级

原React项目Vite版本升级到^4.4.5

Vite 4 在构建和开发服务器的性能上进行了优化,提升了启动速度和热更新速度,并且修复了特殊情况下热更新问题。

npm install vite@^4.4.5

@vitejs/plugin-react版本升级

如只升级Vite,删除node_modules重新安装依赖会报版本兼容错误,错误如下

@vitejs/plugin-react 升级到^4.3.2

npm i -D eslint-plugin-react-refresh

编码注意事项

由于如下编码习惯问题同样会引起局部热更新无法工作

  1. 未保证一致的组件出口,为了保证热更新工作,你必须保证Tsx文件只导出React组件

Fast Refresh | Gatsby

Tsx文件呈现 React 组件,但也导出由非 React 组件导入的值。例如,组件文件还导出一个常量,并且ts文件导入它。在这种情况下,请考虑将常量迁移到单独的文件并将其导入到两个文件中。这将重新启用快速刷新功能。其他情况通常也可以用类似的方法解决。

具体报错示例

代码出处:

  1. Tsx文件使用匿名导出组件,也会引起热更新失效,swr-graphql/issues Anonymous arrow functions cause Fast Refresh to not preserve local component state. · Issue #6 · praveenweb/swr-graphql · GitHub

好的写法

预防方案

增加使用Eslint检查

GitHub - ArnaudBarre/eslint-plugin-react-refresh: Validate that your components can safely be updated with fast refresh

  1. 安装eslint-plugin-react-refresh

npm i -D eslint-plugin-react-refresh
  1. 找到eslint配置文件,增加如下内容

{"plugins": ["react-refresh"],"rules": {"react-refresh/only-export-components": "warn"}
}

你亦或者可以选择“error”的警示方式,排查写法

Eslint全局排查解决

npm run lint

最后,在解决了热更新失效的问题后,我们运行了 npm run lint 命令进行全局排查和解决潜在的代码问题。

通过以上的依赖升级、编码注意事项和预防措施,我们成功修复了 React 项目热更新失效的问题,并且为后续开发规避了类似的问提。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/882585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R01 vue+springboot 高考志愿推荐AI问答大数据平台

可以查看本文系统对应的视频讲解: vuespringboot 高考推荐AI问答志愿推荐大数据 R01 带增删改查、大屏、支持爬虫 1 系统背景 近年来,高考作为中国教育体系中最重要的考试之一,承载了无数考生和家庭的梦想。随着信息技术的迅猛发展&#xff…

class GenericRow(protected[sql] val values: Array[Any]) extends Row

class GenericRow(protected[sql] val values: Array[Any]) extends Row 是 Scala 语言中的一行代码,定义了一个名为 GenericRow 的类,它继承自 Row 类。下面是这行代码的详细解释: 组件解析 class GenericRow: 这是类的定义,类名…

如何用bat脚本修改windows环境下jenkins服务的登陆密码

在Windows系统下,你可以使用批处理文件(.bat)来修改Jenkins服务的登录密码。但请注意,这通常涉及到对Windows服务的配置,并且需要管理员权限。 以下是一个基本的步骤和示例脚本,用于修改Jenkins服务的登录…

直击工博会|可靠的数据传输与洞察,助力工业设备实现灵活互联

2024 年 9 月 24 日,第 25 届中国国际工业博览会在国家会展中心(上海)隆重开幕。今年,HMS 工业网络再度强势出击,携多款创新解决方案亮相于 6.1H-B112 展位。特别值得一提的是,HMS 旗下的红狮控制&#xff…

UDP/TCP协议详解

目录 一,自定义应用层协议: 1)xml 2),JSON 3),yml 4),google protobuffer 二,传输层UDP/TCP: UDP协议: TCP协议: TCP的核心机制一:确认应答 TCP核心机制二:超时重传 TCP核心机制三:连接管理 TCP核心机制四:滑动窗口 TCP核心机制五:流量控制 TCP核心机制六:拥塞控制…

HT6881 4.7W防削顶单声道音频功率放大器

1 特性 ● 防削顶失真功能(Anti-Clipping Function,ACF) ● AB类/D类切换 ● 优异的全带宽EMI抑制性能 ● 免滤波器数字调制,直接驱动扬声器 ● 输出功率 1.4W (VDD3.6V, RL4Ω, THDN10%, Class D) 2.8W(VDD5.0V,RL4Ω, THDN10%, ClassD) 4.7W(VDD6.5V,RL4Ω, THDN…

Maven--简略

简介 Apache旗下的一款开源项目,用来进行项目构建,帮助开发者管理项目中的jar及jar包之间的依赖,还拥有项目编译、测试、打包的功能。 管理方式 统一建立一个jar仓库,把jar上传至统一的仓库,使用时,配置…

WebSocket介绍和入门案例

目录 一、WebSocket 详解1. 定义与特点:2. 工作原理:3. 应用场景: 二、入门案例 一、WebSocket 详解 1. 定义与特点: WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时、双向的数据传…

【WebGIS】Cesium:GLTF数据加载

在3D Web GIS开发中,使用GLTF格式的模型可以提高应用的加载速度并提升用户体验。Cesium.js是一个强大的3D地理空间引擎,支持GLTF格式的3D模型,并且提供丰富的API来处理和优化模型的加载和渲染。本文将系统地介绍如何加载GLTF模型,…

马来酰亚胺-聚乙二醇-巯基/叶酸 MAL-PEG-SH,MAL-PEG-FA实验试剂-抗体偶联物(ADC

马来酰亚胺-聚乙二醇-巯基(MAL-PEG-SH)是一种具有马来酰亚胺(MAL)和巯基(SH)官能团的聚乙二醇(PEG)衍生物。这种化合物在生物分子修饰和药物递送等领域具有重要的应用。 1. 生物分子…

期货外盘行情源7个市场CTP推送式服务说明

在期货交易领域,及时、准确的市场行情信息是投资者做出决策的重要依据。为了满足广大期货投资者对国际期货市场信息的迫切需求,我们特别推出了“期货外盘行情源2千每月7个市场CTP推送式”服务。本服务旨在通过高效、稳定的技术手段,为投资者提…

基于SpringBoot设计模式之结构型设计模式·桥接模式

文章目录 介绍开始架构图定义类的功能定义类的实现 测试样例 总结 介绍 将抽象部分与它的实现部分分离,使他们都可以独立地发生变化。 Bridge的意思是桥梁。就像在现实世界中,桥梁的功能是将河流的两侧连接起来一样, Bridge模式的作用也是将两样东西连接…

鸿蒙网络编程系列3-TCP客户端通讯示例

1. TCP简介 TCP协议是传输层最重要的协议,提供了可靠、有序的数据传输,是多个广泛使用的表示层协议的运行基础,相对于UDP来说,TCP需要经过三次握手后才能建立连接,建立连接后才能进行数据传输,所以效率差了…

Fastapi之BackgroundTasks

如何在 FastAPI 中使用 BackgroundTasks 来异步执行后台任务 import asyncio import logging import timefrom fastapi import FastAPI, BackgroundTasks# 配置日志记录级别 logging.basicConfig(levellogging.INFO)# 初始化FastAPI应用 app FastAPI(routesNone)# 初始化任务…

Go_Parser部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、源码安装2.1.1、部署系统依赖组件2.1.1.1、部署IDA Pro 7.5 SP32.1.1.2、部署Python 3.9.132.1.1.3、部署Go 1.13.1 2.1.2、使用源码安装系统 2.2、使用方法2.2.1、准备测试程序2.2.2、创建IDA Pro项目2.2.3、使用Go_Parser解析二进制程…

植物大战僵尸杂交版游戏分享

植物大战僵尸杂交版游戏下载:夸克网盘分享 无捆绑之类的隐形消费,下载即玩

电力调度控制中心在电力系统中的作用

在庞大而复杂的电力系统中,电力调度控制中心犹如一颗智慧的心脏,扮演着不可或缺的角色。它不仅是电力输送与分配的指挥官,更是确保电网安全、稳定、高效运行的守护者。关于电力调度控制中心在电力系统中的作用,我们具体了解一下。…

URL+Tcp/IP+Http Https

URL 1,在WWW上,每一个信息资源都有统一的且在网上唯一的地址,该地址就叫URL,(统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址,用于定位网络资源,例如:视频,音…

全新子比主题7.9.2开心版 子比主题最新版源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 wordpress zibll子比主题7.9.2开心版 修复评论弹授权 可做付费下载站 含wordpress搭建视频教程zibll子比主题安装视频教程支付配置视频教程,视频都是语音讲解,…

AI产品经理:从入门到精通,一篇文章带你入门!(附学习资料)

一、AI产品经理工作全流程概览 AI产品经理工作全流程中与普通产品经理的区别主要是多了算法模型部分,包括模型预研、数据准备、模型构建、模型宣讲、模型验收,协作的对象相对普通产品经理也多了算法工程师。 二、需求定义 需求定义主要要定义清楚以下几…