react-router-dom6 路由懒加载与组件懒加载

react-router-dom6 路由懒加载与组件懒加载

本文教学如何配置最新路由的懒加载 以及 组件懒加载

组件懒加载

组件引入方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ps1oBfc-1660031012499)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9938f1f4b8dc47569113be08ba1f4fa4~tplv-k3u1fbpfcp-watermark.image?)]

需要用到懒加载的组件:此时我这个组件默认是关闭的,类似于弹窗之类的,就需要最好做一个懒加载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eLm4lgNq-1660031012501)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c8485df510314ae38655584186a46ee8~tplv-k3u1fbpfcp-watermark.image?)]

再配置一个过渡组件,就是等待我们懒加载的组件还没过来时运行此组件
我这边是配置在index.tsx里面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S8Pe2Yyu-1660031012502)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7e789387a3554211aa871367fea29c16~tplv-k3u1fbpfcp-watermark.image?)]

这样就实现了组件懒加载,在我们需要将该组件懒加载的时候就采用lazy的方式导入即可

路由懒加载

有了组件懒加载在index.tsx中配置的过渡组件,我们这同样可以复用
如果我们不想用也可以自己定制Suspense,嵌套在路由组件前即可如 lztest
route index.tsx

import { lazy, Suspense } from "react";
import { Navigate } from "react-router-dom";

// React 组件懒加载
const TodoList = lazy(() => import("../commponet/TodoList"));
const LazyTest = lazy(() => import("../page/LazyTest"));

interface Router {
  name?: string;
  path: string;
  children?: Array<Router>;
  element: any;
}

const routes: Array<Router> = [
  {
    path: "/tsdemo",
    element: <TodoList />,
  },
  {
    path: "/lztest/:name/:age/:sex",
    // element: <LazyTest />,
    element: (
      <Suspense fallback={<h2>加载中....</h2>}>
        <LazyTest />
      </Suspense>
    ),
  },
  {
    path: "/",
    element: <Navigate to="/tsdemo" />,
  },
];

export default routes;


测试结果

先降低网速

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qjy25HiV-1660031012503)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/20e0094287894b388117c06f37fdb16e~tplv-k3u1fbpfcp-watermark.image?)]

刷新

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U05V7DSv-1660031012505)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/25a57ff3160742caab3d20c1a78c3f48~tplv-k3u1fbpfcp-watermark.image?)]

点击控制懒加载组件显示
我们会发现此时会加载一个文件,这个文件就是对应的懒加载文件
说明我们成功实现了懒加载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DIwKAAbL-1660031012507)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ffc295415abf4a8499169e7864a1f354~tplv-k3u1fbpfcp-watermark.image?)]

点击切换路由
第一个是加载组件的懒加载文件
第二个是加载路由组件的懒加载文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jpjibHgQ-1660031012512)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cf3b171a2a1b4f8e82596b3ddce6adbc~tplv-k3u1fbpfcp-watermark.image?)]

成功!

在这里插入图片描述

React Router v6 中,路由懒加载流程 v5 有所不同。以下是实现路由懒加载的步骤: 1. 确保你已经安装了 `react-router-dom` 的版本为 6.x。 ```bash npm install react-router-dom@next ``` 2. 导入需要使用的组件和函数: ```jsx import React, { lazy, Suspense } from 'react'; import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; ``` 3. 创建需要懒加载组件: ```jsx const Home = lazy(() => import('./components/Home')); const About = lazy(() => import('./components/About')); const Contact = lazy(() => import('./components/Contact')); ``` 4. 使用懒加载组件路由: ```jsx function App() { return ( <Router> <Suspense fallback={<div>Loading...</div>}> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> </Routes> </Suspense> </Router> ); } export default App; ``` 在上面的代码中,`Suspense` 组件用于在组件加载期间显示一个加载提示(例如 "Loading..."),直到组件加载完成。`fallback` 属性指定了加载期间显示的内容。 使用 `Routes` 组件来定义路由,而不是之前的 `Switch` 组件。 在每个 `Route` 组件中,使用 `element` 属性来指定要渲染的懒加载组件。 这样,当用户访问相应的路由时,对应的组件将会被动态加载并渲染。 请注意,v6 中还有其他一些变化,如路由路径匹配的语法和路由传参等。你可以查阅 React Router v6 的官方文档以获取更详细的信息。 希望这个例子对你有帮助!如果有任何问题,请随时向我提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值