轻松搞定-react-6-路由-1-配置-懒加载

简介: 轻松搞定-react-6-路由-1-配置-懒加载

1. 前言

  1. 以前的文章路由都是5x路由配置,最近写个6x的,写完准备玩玩C,到时候在交流
  2. 因为现在脚手架默认安装的react也是18.x了 所以也注意哦
  3. 路由hook用法单独在写文章
  4. react-router-dom 官网 英文的 有兴趣的可以自己看着学

2. 效果演示

  1. 效果图image.png
    设计图.png
  2. 下述逻辑按这个来实现

3. 相关依赖安装

  1. 路由默认最新6.X, 如需使用5.x, 在模块名后加@5

npm install react-router-dom  @loadable/component  --save     // 6.0
    npm install react-router-dom@5 --save   // 5.0
     //开发依赖
    npm install  sass -D
  1. sass 属于开发依赖
  2. @loadable/component 路由懒加载
  3. 贴下主要依赖版本

//生产依赖
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-router-dom": "^6.3.0",
   "@loadable/component": "^5.15.2",
// 开发依赖
    "sass": "^1.52.3"
  }

4. 应用场景

  1. SPA单页应用,因为单页应用只有一个index.html,我们所看到的的跳转其实都是假跳,而React不自带这个功能,所以使用react-router-dom,vue中的vue-router也是一样的道理
  2. 创建项目

create-react-app 项目名/play-router6

5.  页面准备

  1. 路由嘛 需要跳转页面,所以先创建4个页面
  2. src/pages/home/index.jsx
  3. src/pages/friendList/index.jsx
  4. src/pages/friendCircle/index.jsx
  5. src/pages/my/index.jsx
  6. rfc 是函数式组件快捷方式
  7. rcc 是类组件快捷方式 插件是 ES7+ React/Redux/React-Native snippets
  8. 每个页面写个h1标签 简单标识下页面 用于显示区分

import React, { Component } from 'react'
export default class index extends Component {
  render() {
    return (
      <div>
        <h1>主页</h1>
      </div>
    )
  }
}

6. 路由配置

6.1 完整配置

  1. 我个人习惯单独搞个路由配置文件,有些人习惯直接写在入口index.js里面,自己开心就好
  2. 目录结构 src/rouer/index.jsx
  3. 先上代码在分析

import loadable from "@loadable/component";
import Loading from "../components/Loading";
import Home from "../pages/home";
import { Routes, Route } from "react-router-dom";
const  FriendList = loadable(()=>import("../pages/friendList"),{ fallback: <Loading /> }) ;
const  FriendCircle = loadable(()=>import("../pages/friendCircle"),{ fallback: <Loading /> }) ;
const  MyPage = loadable(()=>import("../pages/my"),{ fallback: <Loading /> }) ;
export default function () {
  return (
    <Routes>
      <Route path="/" element={<Home />} />
      <Route path="/fl" element={<FriendList />} />
      <Route path="/fc" element={<FriendCircle />} />
      <Route path="/my" element={<MyPage />} />
    </Routes>
  );
}

6.2 懒加载的用法

  1. @loadable/component路由懒加载的使用

import loadable from "@loadable/component";
import Loading from "../components/Loading";
loadable(()=>import("../pages/friendList"),{ fallback: <Loading /> })
  1. 其实这个import的写法和vue-router懒加载一样
  2. 第二个参数是 加载回调加载动画,可以自己设置组件
  3. Loading组件 image.png
    Loading组件.png

6.3 Route

  1. Route 用来定义一个访问路径与 React 组件之间的关系
  2. 对比vue-router就是单个路由配置
  3. path必须的属性  url显示的路径
  4. element用来显示组件  注意 组件必须是标签,不能直接写组件名,必须是<组件名>格式
  5. 懒省事也可以这样写 element={<div>我是主页</div>}

6.4 Routes

  1. Routes 是用来包住路由访问路径(Route)的。它决定用户在浏览器中输入的路径到对应加载什么 React 组件
  2. 绝大多数情况下,Routes 的唯一作用是用来包住一系列的 Route ;
  3. 对比vue-router就是 路由配置表

7. 入口  index.js配置

  1. 直接上代码 这是react 18.X
  2. as别名 看个人习惯

import { BrowserRouter as Router } from "react-router-dom";
import RouterComponent from "./router";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <Router>
    <React.StrictMode>
      <App />
    </React.StrictMode>
    <RouterComponent />
  </Router>
);
  1. 使用BrowserRouter把整个应用程序的入口包裹,就相当于把路由模块包功能挂载到应用程序实例。
    4.BrowserRouter就是其中的一个路由组件,就是其中的一个路由模式。浏览器端路由模式
  2. HashRouter路由组件是另外一个路由模式。Hash路由模式
  3. MemoryRouter路由组件是另外一个路由模式。缓存路由模式

8. App.jsx

  1. 为了方便把 App.js改为了 App.jsx
  2. App.css改为了 App.scss
  3. 也可以直接在 入口index.js配置,看个人习惯
  4. 直接上代码 在分析

import "./App.scss";
import { NavLink } from "react-router-dom";
function App() {
  return (
    <div className="App">
      <div className="NavBar">
        <NavLink to="/" activeclassname="active">主页</NavLink>
        <NavLink to="/fl">联系人</NavLink>
        <NavLink to="/fc">朋友圈</NavLink>
        <NavLink to="/my">我的</NavLink>
      </div>
    </div>
  );
}
export default App;
  1. 清空了原来的内容,自己写
  2. activeclassname 路由自带的选中样式
  3. 样式,我把导航放到了底部

.NavBar  {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  background-color: #2567ff;
  height: 50px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: nowrap;
  a{
    flex: 1;
    text-decoration: none;
    color: #FFF;
  }
  .active{
    color: #F00;
  }
}

9. 后记

  1. 就到这,是个基础配置,也有界面效果
  2. 下篇文章嵌套路由-404

参考资料

6.x 嵌套路由-404配置-2

6x 路由传值

react-router-dom 官网


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉
相关文章
|
1月前
|
移动开发 前端开发 API
React路由和HTML5 History API有什么区别
【8月更文挑战第11天】React路由和HTML5 History API有什么区别
30 1
|
9天前
|
前端开发 Python
React技术栈-React路由插件之自定义组件标签
关于React技术栈中React路由插件自定义组件标签的教程。
34 4
React技术栈-React路由插件之自定义组件标签
|
9天前
|
前端开发 程序员 API
React技术栈-React路由插件之react-router的基本使用
这篇博客介绍了React路由插件react-router的基本使用,包括其概念、API、以及如何通过实战案例在React应用中实现SPA(单页Web应用)的路由管理。
31 9
|
14天前
|
资源调度 前端开发 数据安全/隐私保护
react动态路由权限
【8月更文挑战第29天】 react动态路由权限
16 4
|
15天前
|
存储 监控 前端开发
|
24天前
|
前端开发 JavaScript 算法
React Server Component 使用问题之想在路由切换时保持客户端状态,如何实现
React Server Component 使用问题之想在路由切换时保持客户端状态,如何实现
|
24天前
|
前端开发 JavaScript PHP
React Server Component 使用问题之路由的能力,如何实现
React Server Component 使用问题之路由的能力,如何实现
|
1月前
|
移动开发 前端开发 安全
React Native环境搭建及配置问题
React Native环境搭建及配置问题
33 2
|
11天前
|
前端开发 测试技术 开发者
React Router的神奇之处:如何用导航与路由管理让你的复杂SPA飞起来?
【8月更文挑战第31天】本文全面解析了React Router——一款用于React应用的路由与导航管理库。通过定义不同路径并依据URL渲染组件,React Router支持路径匹配、参数路由及嵌套路由等多种模式。文章详细介绍了其基本与高级用法,如使用`Link`组件导航、`Switch`组件进行路径匹配及`NavLink`自定义活动链接样式。此外,还探讨了懒加载、代码分割等性能优化技巧,并提供了简单示例代码,帮助读者快速上手。遵循本文最佳实践,开发者能够更高效地利用React Router构建复杂的单页面应用。
27 0
|
12天前
|
前端开发 网络架构
如何在 React 应用程序中处理路由?
【8月更文挑战第31天】
16 0

热门文章

最新文章