修复vite中使用react提示Fast refresh only works when a file only exports components.

前言

我通过 vite 构建了一个 react 应用并使用 react.lazy 来懒加载组件,但是在使用过程中 一直提示 Fast refresh only works when a file only exports components. Move your component(s) to a separate file.eslint(react-refresh/only-export-components)。这里简单的记录下问题的修复方式。

复现方式

先定义一组路由并导出

// src/router/index.jsx
import { lazy } from "react"
import { Navigate } from "react-router-dom"const Home = lazy(() => import("../views/home"))const routes = [{ path: "/", element: <Navigate to="/home" /> },{ path: "/home", element: <Home /> },
]
export default router

main.jsx中使用简洁的 URL <BrowserRouter> 将当前位置存储在浏览器地址栏中,并使用浏览器内置的历史堆栈进行导航。

// src/main.jsx
import ReactDOM from 'react-dom/client'
import App from './App.jsx'
import { BrowserRouter } from "react-router-dom"ReactDOM.createRoot(document.getElementById('root')).render(<BrowserRouter><App /></BrowserRouter>
)

App.jsx 使用钩子函数 useRoutes 的返回一个有效的 React 元素来呈现路由树。

// src/App.jsx
import { useRoutes } from "react-router-dom"
import routes from './router/index'function App() {return (<><div className="page">{ useRoutes(routes) }</div></>)
}
export default App

但是在 router/index.jsx 中一直会提示如下错误:

在这里插入图片描述

解决措施

这里有两种解决方案:

  • 为所有文件的此规则添加禁用注释。这实际上不会打破快速刷新。

  • 导出呈现路由器提供程序的组件,而不是导出路由器。

在不修改原有配置的基础上我们推荐使用第二种方式进行修改,而且也是副作用最小的方式。

1、在 router\index.jsx 文件中使用 createBrowserRouter 这个 React Router Web 项目推荐使用的路由并使用 RouterProvider 导出路由。修改代码如下:

import { lazy } from "react"
import { Navigate, createBrowserRouter, RouterProvider } from "react-router-dom"const Home = lazy(() => import("../views/home"))const routes = [{ path: "/", element: <Navigate to="/home" /> },{ path: "/home", element: <Home /> },
]const router = createBrowserRouter(routes)const Routes = () => {return <RouterProvider router={router} />
}
export default Routes

2、在 main.jsx 中直接渲染 App 组件即可

import ReactDOM from 'react-dom/client'
import App from './App.jsx'ReactDOM.createRoot(document.getElementById('root')).render(<App />)

3、在 App.jsx 中直接使用 router\index.jsx 中导出的函数式组件,修改代码如下:

import Routes from "./router";function App() {return (<><div className="page"><Routes></Routes></div></>)
}
export default App

参考链接:Lazy Loading react component get some warning

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

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

相关文章

PSA Group EDI 需求分析

PSA集团&#xff08;以下简称PSA&#xff09;中文名为标致雪铁龙集团&#xff0c;是一家法国私营汽车制造公司&#xff0c;致力于为全球消费者提供独具特色的汽车体验和自由愉悦的出行方案&#xff0c;旗下拥有标致、雪铁龙、DS、欧宝、沃克斯豪尔五大汽车品牌。 汽车制造企业对…

Spring Cloud Gateway面试题

Spring Cloud Gateway面试题 1. Spring Cloud Gateway基本概念1.1 什么是Spring Cloud Gateway&#xff1f;1.2 Spring Cloud Gateway和Zuul有什么区别&#xff1f;1.3 Spring Cloud Gateway的核心组件有哪些&#xff1f;1.4 为何需要使用API网关&#xff1f; 2. 路由和过滤器2…

Uni-app中实现数据选择并回传给上个页面的方法

当我们在Uni-app中进行页面间数据传递时&#xff0c;通常会涉及到数据的选择以及回传给上个页面的需求。为了达到这个目的&#xff0c;我们可以利用Uni-app提供的事件机制和页面导航方法来实现。以下是一种实现方式&#xff1a; 数据选择并回传给上个页面的方法 第一步&#…

动力学重构/微分方程参数拟合 - 基于模型

这一篇文章&#xff0c;主要是给非线性动力学&#xff0c;对微分方程模型参数拟合感兴趣的朋友写的。笼统的来说&#xff0c;这与混沌系统的预测有关&#xff1b;传统的机器学习的模式识别虽然也会谈论预测结果&#xff0c;但他们一般不会涉及连续的预测。这里我们考虑的是&…

java小作业(13)--百元买百鸡(第二遍)

代码&#xff1a; public class Sain{public static void main(String[] args){int a2,b3,c5;int m0;int totalqian100;int mina1,minb1,minc1;for(int asmina;as<totalqian/a;as){for(int bsminb;bs<totalqian;bs) {for(int csminc;cs<totalqian/c;cs) {int sumcs*5…

Rokid AR Lite空间计算套装发布,中国空间计算踏上差异化领先之路

动动手指、动动眼睛就可以“操控一切”&#xff0c;这种颇具科幻感、未来感的交互方式&#xff0c;令许多人感叹“未来已来”。而这令人震撼的变革背后&#xff0c;正是空间计算技术的迅猛崛起与广泛应用&#xff0c;使得这种曾经只存在于想象中的交互方式&#xff0c;如今正逐…

循环神经网络(RNN):概念、挑战与应用

循环神经网络&#xff08;RNN&#xff09;&#xff1a;概念、挑战与应用 1 引言 1.1 简要回顾 RNN 在深度学习中的位置与重要性 在深度学习的壮丽图景中&#xff0c;循环神经网络&#xff08;Recurrent Neural Networks&#xff0c;RNN&#xff09;占据着不可或缺的地位。自从…

Linux 磁盘管理和文件系统

硬盘的物理结构&#xff1a; 盘片硬盘有多个盘片&#xff0c;每盘片2面磁头每面一个磁头 硬盘的数据结构&#xff1a; 扇区盘片被分为多个扇形区域&#xff0c;扇区:每个扇区存放512字节的数据&#xff0c;硬盘的最小存储单位磁道同一盘片不同半径的同心圆&#xff0c;是由磁…

软件设计师软考中项学习(二)之计算机系统基础知识

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 学习目标学习内容学习笔记学习总结 学习目标 计算机系统硬件基本组成 中央处理…

友思特应用 | 红外视角的延伸:短波红外相机的机器视觉应用

导读 短波红外SWIR在不同波段针对不同材料的独特成像特征为各领域检测应用的拓宽提供了基础。本文将展现短波红外成像技术在水分检测、塑料检测、太阳能电池板检查和矿场开采等领域的丰富应用案例&#xff0c;讨论短波红外相机在未来的发展方向。 SWIR 背景简介 短波红外 &am…

上位机图像处理和嵌入式模块部署(树莓派4b和视觉slam十四讲)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 实际使用中&#xff0c;树莓派4b是非常好的一个基础平台。本身板子价格也不是很贵&#xff0c;建议大家多多使用。之前关于vslam&#xff0c;也就是…

详细理解React的Fiber结构

一、为什么会出现Fiber 旧版 React 通过递归的方式进行渲染&#xff0c;使用的是 JS引擎自身的函数调用栈&#xff0c;它会一直执行到栈空为止。而Fiber实现了自己的组件调用栈&#xff0c;它以链表的形式遍历组件树&#xff0c;可以灵活的暂停、继续和丢弃执行的任务。实现方式…

微服务架构中的数据一致性设计及技术实现

目录 1.概要设计 1.1数据一致性模型 1.1.1 强一致性 1.1.2 最终一致性 1.2 技术实现策略 1.2.1 使用分布式事务 1.2.2 基于事件的最终一致性&#xff08;Event-Driven Architecture, EDA&#xff09; 1.2.3 使用数据库的特性 1.2.4 业务层面的策略 1.2.5 分布式锁和版…

R语言中的execl数据转plink

文章目录 带出外部连接的方式添加列的方式从列表中选出对应的数据信息查看变量信息没有成功 带出外部连接的方式 点击这个黄色的按钮就可以弹出外部链接的方式 添加列的方式 创建一个数据框的方式 我们创建一个三行三列的数据方式 df <- data.frame(name c("Alice&…

Redis的内存淘汰策略

关于Redis的淘汰策略 1.noeviction&#xff08;不淘汰策略&#xff09; 就是key已经到达了最大的内存限制&#xff0c;那个一个也不淘汰了&#xff0c;但是也没有办法给缓存里面添加数据了&#xff0c;一添加这样是为了保护数据库不崩 2.volatile-lru&#xff08;最近最少使用…

【CSS】深入理解:BFC究竟是什么?

深入理解&#xff1a;BFC究竟是什么&#xff1f; 在我们了解BFC之前&#xff0c;我们先来看看什么是FC 1. FC的概念 FC全称 Formatting Context ,元素在标准流里面都属于一个FC 块级元素的布局都属于Block Formatting Context,也就是BFC block level box都是在BFC中布局的 …

利用AQS(AbstractQueuedSynchronizer)实现一个线程同步器

目录 1. 前言 2. 什么是同步器 3. 同步器实现思路 Semaphore(信号量) 4. 代码实现 4.1. 创建互斥锁类 4.2 编写静态内部类&#xff0c;继承AQS 4.3 内部类实现AQS钩子函数 4.3 封装lock&#xff0c;unlock方法 4.4. 测试 5. 总结 本文章源码仓库&#xff1a;Conc…

SpringBoot解决跨域问题,什么是跨域问题

目录 什么是跨域 配置文件解决跨域问题 注解解决跨域问题 拦截器解决跨域问题 过滤器实现 使用ResponseBodyAdvice 什么是跨域 协议://域名:端口 一个不一样就是跨域 在浏览器的同源策略中&#xff0c;如果两个网页的协议&#xff08;例如&#xff0c;http 或 https&…

【算法刷题 | 回溯思想 06】4.17(子集、子集||)

文章目录 9.子集9.1题目9.2解法&#xff1a;回溯9.2.1回溯思路&#xff08;1&#xff09;函数返回值以及参数&#xff08;2&#xff09;终止条件&#xff08;3&#xff09;遍历过程 9.2.2代码实现 10.子集 ||10.1题目10.2解法&#xff1a;回溯10.2.1回溯思路10.2.2代码实现 9.子…

(2022级)成都工业学院数据库原理及应用实验五: SQL复杂查询

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、成品仅提供参考 3、如果成品不满足你的要求&#xff0c;请寻求其他的途径 运行环境 window11家庭版 Navicat Premium 16 Mysql 8.0.36 实验要求 在实验三的基础上完成下列查询&#xff1a; 1、查询医生…