react路由02——react-routerV6 中路由表的使用(useRoutes钩子)

news2024/11/14 21:24:51

react路由02——react-routerV6 中路由表的使用(useRoutes钩子)

  • 1. 不使用路由表
    • 1.1 关于react-routerV6路由简单使用
    • 1.2 未配置路由表
  • 2. 路由表——useRoutes钩子
    • 2.1 配置路由表
    • 2.2 一级路由组件——useRoutes钩子
    • 2.3 二级路由组件——Outlet组件
    • 2.4 目录结构
    • 2.5 . 遇到的问题
      • 2.5.1 问题1:useRoutes() may be used only……
  • 3. 数据路由器——V6.4 Data APIs:
    • 3.1 简单介绍

1. 不使用路由表

1.1 关于react-routerV6路由简单使用

  • 请看下面的文章
    react路由01——react-routerV6 中路由传递参数的几种方式.

1.2 未配置路由表

  • 先看一下未配置路由表时的项目结构情况,如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 效果,如下:
    在这里插入图片描述
    在这里插入图片描述

2. 路由表——useRoutes钩子

2.1 配置路由表

  • 配置路由表如下:
    在这里插入图片描述
    import Home from "../pages/Home"
    import Dog from "../pages/Dog"
    import Cats from "../pages/Cat/Cats"
    import CatInfo from "../pages/Cat/Info/CatInfo"
    
    export default[
        {
            path:'/',
            element:<Home/>
        },{
            path:'/dog',
            element:<Dog/>
        },{
            path:'/cats/*',
            element:<Cats/>,
            children:[
                {
    	            // path:'info',
    	           // element:<CatInfo name='张三' age={18}/>
                    path:'info/:catId/:catName',
                    element:<CatInfo name='张三' age={18}/>
                }
            ]
        }
    ]
    

2.2 一级路由组件——useRoutes钩子

  • 原路由组件做如下修改(对比原版写法看上面 1.2 未配置路由表):
    在这里插入图片描述

    import React from "react"
    import {Link,useRoutes} from 'react-router-dom'
    import './index.css'
    
    import routes from "../../routes"
    
    function PetLef(){
    
        const myRoutes = useRoutes(routes);
    
        return(
            <div>
                <div className="myMainData left" >
                    {/* 编写路由链接  靠路由链接实现切换组件 */}
                    <ul>
                        <li><Link to="/">Home</Link></li>
                        <li><Link to="/dog">狗狗信息</Link></li>
                        <li><Link to="/cats">猫咪信息</Link></li>
                    </ul>
                </div>
                <div className="myMainData right" >
                    {/* 注册路由 */}
                    {myRoutes}
                </div>
            </div>
        )
    }
    export default PetLef;
    
    • 取参数
      在这里插入图片描述

2.3 二级路由组件——Outlet组件

  • 父路由元素中应使用 <Outlet> 来呈现其子路由元素。这样就可以在呈现子路由时显示嵌套用户界面。如果父路由完全匹配,则会呈现子索引路由;如果没有索引路由,则不会呈现任何内容。
  • 原路由组件做如下修改(对比原版写法看上面 1.2 未配置路由表):
    在这里插入图片描述
    import React,{useState} from "react";
    import {Link,Outlet} from 'react-router-dom'
    
    export default function Cats(){
    
        const [cats] = useState([
            {catId:'A1001',catName:'点点'},
            {catId:'A1002',catName:'阿苔'},
            {catId:'A1003',catName:'花花'}
        ]);
        return(
            <div>
                <h2>猫咪信息</h2>
                <ul>
                    {
                        cats.map((cat)=>{
                            return(
                                <li key={cat.catId}>
                                    {/* 编写路由链接 */}
                                    {/* <Link to='info'>
                                            {cat.catId}--{cat.catName}
                                    </Link> */}
                                    <Link to={`/cats/info/${cat.catId}/${cat.catName}`}>
                                            {cat.catId}--{cat.catName}
                                    </Link>
                                </li>
                            )
                        })
                    }
                </ul>
                <br /><br />
                {/* 二级路由——展示路由组件  二级路由不用useRoutes,用Outlet */}
                <Outlet/>
            </div>
        )
    }
    

2.4 目录结构

  • 如下:
    在这里插入图片描述

2.5 . 遇到的问题

2.5.1 问题1:useRoutes() may be used only……

  • 问题描述如下:
    useRoutes() may be used only in the context of a <Router> component.
    
    在这里插入图片描述
  • 问题原因
    使用路由表之后,BrowserRouter 标签,没有放在较高的位置,原项目里是放在了一个较高的组件路由里,其实应该放在更高的位置。
  • 解决问题:
    • 1⃣️ 可以将 BrowserRouter 标签放到App.js中,如下:
      在这里插入图片描述
    • 2⃣️ 当然也可以直接放到项目的入口位置,index.js 中,如下:
      在这里插入图片描述

3. 数据路由器——V6.4 Data APIs:

3.1 简单介绍

  • 如下:
    在这里插入图片描述
    详细使用,后续介绍

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

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

相关文章

进化算法、遗传编程和学习

一、说明 进化算法是一系列搜索算法&#xff0c;其灵感来自自然界&#xff08;达尔文主义&#xff09;进化过程。所有不同家庭成员的共同点是&#xff0c;通过应用受自然遗传学和自然选择启发的 算子&#xff0c;通过进化出最初 随机的候选解决方案群体来解决问题&#…

打包发布异常01

缺一不可 Build starting... Start: Fri Sep 15 08:07:01 UTC 2023 bfdf11d63b70 Git: 0.33-0-g6190381 commit 61903816b88ff5cf3e0848cd19fcb190af0801cd Author: 米伟强 Date: Fri Sep 15 15:57:28 2023 0800gradle插件版本Init SDKMan Found Android manifest Android …

Rust :与C交互

rust调用C端的库函数&#xff0c;有很多方法。今天介绍通过cc库的方式&#xff0c;实现rust调用c端库函数。 1、相关准备&#xff1a; 在ffi目录下&#xff0c;创建了c_part和rust_ffi文件夹。 c_part下放了ctools.c文件&#xff0c;里面有一些库函数&#xff0c;需要让rust调…

华为云云耀云服务器L实例评测|基于Docker环境快速部署Halo个人博客实操

目录 一、基本介绍 1.1 云耀云服务器L实例介绍 1.2 实操介绍 二、云耀云服务器的购买及基本使用 2.1 服务器购买流程 2.2 初始化连接流程 2.3 系统环境检查 三、Docker中运行Halo 3.1 Halo基本介绍 3.2 Docker的安装 3.3 使用 Docker 镜像创建容器 四、安装初始化H…

LVS负载均衡DR直接路由

LVS负载均衡DR直接路由 一、DR工作原理二、 数据包流向三、DR模式特点四、ARP问题4.1第一次访问完整&#xff08;不考虑实际问题&#xff09;4.2问题一&#xff1a;IP 地址冲突 五、部署LVS-DR集群5.2、第一台web服务器5.3、第二台Web节点服务器5.4、在客户机测试&#xff08;1…

QT : 仿照QQ 完成弹出登录窗口,并实例化组件

1. 运行效果图 2. Headers #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow(); }; #endif // MAINWINDOW_H 3. mainWindow.cpp &#xff1a…

Android studio实现登录验证后返回token及用户信息,使用token获取用户信息并生成列表展示

大概时序图 登录成功保存token&#xff0c;然后带token请求获取用户列表 实现效果&#xff1a; 依赖 build.gradle(:app) dependencies {implementation androidx.recyclerview:recyclerview:1.2.1implementation com.google.code.gson:gson:2.8.9implementation com.tenc…

Python爬虫逆向猿人学刷题系列——第七题

题目&#xff1a;采集这5页中胜点列的数据&#xff0c;找出胜点最高的召唤师&#xff0c;将召唤师姓名填入答案中 地址&#xff1a;https://match.yuanrenxue.cn/match/7 本题主要是考察字体的动态变化&#xff0c;同样也是从字体文件下手构造出映射关系就好&#xff0c;但本题…

k8s(Kubernetes)集群部署--使用 kubeadm方式部署

k8s集群部署--使用 kubeadm方式部署 一、测试所需环境&#xff08;三台均要执行&#xff09;二、配置准备&#xff08;三台均要执行&#xff09;1. 重命名hostname、添加hosts2. 关闭防火墙、selinux与swap3. 添加网桥过滤及内核转发配置文件4.同步时间5.安装ipset及ipvsadm 三…

Tomcat 下部署 jFinal

1、检查web.xml 配置&#xff0c;在 tomcat 下部署需要检查 web.xml 是否存在&#xff0c;并且要确保配置正确&#xff0c;配置格式如下。 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-i…

网址导航收藏引导页面H5源码(自适应引导页HTML源码)-自动检测域名延迟

简介&#xff1a; 网址导航收藏引导页面H5源码&#xff08;自适应引导页HTML源码&#xff09;&#xff0c;可以自动检测域名延迟。这网址导航发布页不同于其它的&#xff0c;因为它可以测试所有域名的一个访问速度&#xff0c;并且将访问速度具象化显示出来&#xff0c;具体的…

性能调优降本实例

降本思路 在A企业内部&#xff0c;线上业务稳定性标准为&#xff1a;达到业务核定TPS时&#xff0c;CPU利用率的峰值不超过60&#xff05;&#xff0c;即为稳定状态。 在这个背景下&#xff0c;测试部门针对部分CPU消耗较高的系统进行了统一梳理和专项性能测试&#xff0c;旨…

Linux 挂载

挂载需要挂载源和挂载点 虚拟机本身就有的挂源 添加硬件 重启虚拟机 操作程序 sudo fdisk -l //以管理员权限查看电脑硬盘使用情况sudo mkfs.ext4 /dev/sdb //以管理员身份格式化硬盘sudo mkdir guazai //创建挂载文件夹 sudo mount /dev/sdb/guazai //将挂载源接上挂载点 s…

【数据结构】堆排序详解

文章目录 一、堆排序思想二、向上调整建堆排序三、向下调整建堆排序四、总结 对于什么是堆&#xff0c;堆的概念分类以及堆的向上和向下两种调整算法可见&#xff1a; 堆的创建 一、堆排序思想 int a[] { 2,3,5,7,4,6 };对于这样一个数组来说&#xff0c;要想要用堆排序对它…

Webserver项目解析

一.webserver的组成部分 Buffer类 用于存储需要读写的数据 Channel类 存储文件描述符和相应的事件&#xff0c;当发生事件时&#xff0c;调用对应的回调函数 ChannelMap类 Channel数组&#xff0c;用于保存一系列的Channel Dispatcher 监听器&#xff0c;可以设置为epo…

分享一个基于微信小程序的社区生活小助手源码调试和lw,有java+python双版本

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

让NPU跑起来迅为RK3588开发板设置交叉编译器

让NPU跑起来迅为RK3588开发板设置交叉编译器 编译器下载地址是网盘资料“iTOP-3588 开发板\02_【iTOP-RK3588 开发板】开发资料 \12_NPU 使用配套资料\03_编译所需工具\Linux”。 拷贝 gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz 到 Ubuntu 的/opt/tool_ch…

JavaScript中的`async`和`await`关键字的作用

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ async关键字⭐ await 关键字3. 错误处理 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对We…

中国汽车供应商远赴德国,中国智驾方案能否远渡重洋?

作者|Amy 编辑|德新 今年的上海车展&#xff0c;中国智能汽车的进步有目共睹&#xff0c;吸引了大批外企高管和研发人员的关注&#xff0c;甚至引发了海外车企一系列的动作和调整。 而在刚刚结束的慕尼黑车展&#xff0c;中国车企及汽车供应链把「肌肉」秀到了现代汽车起源地…

flask要点与坑

简介 Flask是一个用Python编写的Web应用程序框架&#xff0c;该框架简单易用、模块化、灵活性高。 该笔记主要记录Flask的关键要点和容易踩坑的地方 Flask 日志配置 Flask 中的自带logger模块&#xff08;也是python自带的模块&#xff09;&#xff0c;通过简单配置可以实现…