美文网首页
轻松搞定-react-6-路由-1-配置-懒加载

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

作者: 云高风轻 | 来源:发表于2022-06-22 19:01 被阅读0次

    1. 前言

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

    2. 效果演示

    1. 效果图 设计图.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组件 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 官网


    初心

    我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
    如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
    共勉

    相关文章

      网友评论

          本文标题:轻松搞定-react-6-路由-1-配置-懒加载

          本文链接:https://www.haomeiwen.com/subject/dxeuvrtx.html