react-router V6 传递参数的三种方式

news2025/1/16 3:46:41

在这里插入图片描述

react-router V6 传递参数的三种方式

    • 路由跳转使用`navigate()`
    • 路由传参
      • 1,searchParams传参
      • 2,params 传参
      • 3,state传参
      • 总结

路由跳转使用navigate()

编程式导航

  • 导入一个 useNavigate钩子函数
  • 执行 useNavigate 函数得到 跳转函数
  • 在事件中执行跳转函数完成路由跳转
import { useNavigate  } from "react-router-dom";
// 直接在函数式组件中调用 传入路由path直接开始跳转
navigate("/page1");

场景:跳转路由的同时,有时候要需要传递参数

由于v6把旧版本中的路由组件能收到的三个参数(Location,history,match) 移除了,所以 不能直接使用this.props.location.pathname 获取到当前路由。而且 withRouter也移除 了。

那么如何传参呢?请往下看:

路由传参

1,searchParams传参

search 传参的方式比较简单,参数的形式以 问号拼接 到地址后面

传参

import { useNavigate  } from "react-router-dom";

const Login: React.FC = (props: any) => {
   // 提交按钮
  const onFinish = () => {
    // 1,search传参
    navigate("/page1?name=Eula&age=18");
  };
}

取参

import { useSearchParams } from "react-router-dom";

const Login: React.FC = (props: any) => {
  const onFinish = () => {
     // 问号传参的获取方式
	let [searchParams, setSearchParams] = useSearchParams()
	console.log(searchParams.get('name')) //  "Eula"
	console.log(searchParams.get('age')) //  18
  };
}

2,params 传参

params 方式传参要求会多一些,需要我们在路由表配置的位置添加一个 参数占位。

路由表配置的位置添加参数占位

 {
    path: "/",
    element: withLoadingComponents(<Home />), 
    children: [
      {
        path: "/page1/:name/:age",//注意这里 可以占位多个
        element: withLoadingComponents(<Page1 />)
      },
    ]
  },

传参

import { useNavigate  } from "react-router-dom";

const Login: React.FC = (props: any) => {
   // 提交按钮
  const onFinish = () => {
     // params 传参
    navigate("/page1/Eula/18");
  };
}

取参

import { useParams } from "react-router-dom";

const Login: React.FC = (props: any) => {
  const onFinish = () => {
  // 使用useParams 函数
  const params = useParams()
  console.log("params:",params);// 打印 {   "name": "Eula",    "age": "18"}
  };
}

3,state传参

使用state传参时,参数需要放到state对象里面;

注意:此时路由上不能有params 传参时的参数占位,否则无法跳转;

传参

import { useNavigate  } from "react-router-dom";

const Login: React.FC = (props: any) => {
   // 提交按钮
  const onFinish = () => {
     // state 传参 
     navigate("/page1",{ state: {name:'Eula',age:"18"}});
  };
}

取参

import { useLocation } from "react-router-dom";

const Login: React.FC = (props: any) => {
  const onFinish = () => {
  // 获取navigate中传递的state中的信息
  let location = useLocation(); 
  console.log("params:",location);
  };
}

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

总结

传参方式使用取参
searchParams 传参navigate(“/page1?name=Eula&age=18”);useSearchParams()
params传参navigate(“/page1/Eula/18”); 需要路由表添加占位: path: “/page1/:name/:age”,useParams()
state传参navigate(“/page1”,{ state: {name:‘Eula’,age:“18”}});useLocation()

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

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

相关文章

服务器PING值不稳定是什么情况?

​  服务器ping值不稳定是指服务器在不同时间段内&#xff0c;对同一IP地址进行ping测试时&#xff0c;返回的延迟时间不同&#xff0c;存在波动的情况。这种情况会对服务器的性能和稳定性产生影响&#xff0c;影响用户的使用体验。下面我们来分析一下服务器ping值不稳定的原…

模拟IC方向面试常考问题及答案汇总,IC人必看

有不少小伙伴说想了解模拟IC方向的面试题目&#xff0c;这不就来了&#xff01;&#xff08;文末可领全部面试题目&#xff09; 1. 基尔霍夫定理的内容是什么&#xff1f; 电流定律&#xff1a;在集总电路中&#xff0c;任何时刻&#xff0c;对任一节点&#xff0c;所有流出节…

怎样让你的客户服务更高效

随着商业环境的变化&#xff0c;越来越多的企业开始意识到客户服务对于企业的重要性。高效的客户服务能够促进客户满意并增加销售额&#xff0c;从而帮助企业获得更大的成功。但是&#xff0c;怎样才能让您的客户服务更高效呢&#xff1f;以下是一些建议。 建立一个完善的客户…

浅水域三维探地雷达数值模拟研究

Gprmax浅水域三维地质雷达数值模拟研究 前言 浅水域地下不良地质体的探测一直是工程勘察的难点&#xff0c;地质雷达具有仪器轻便、操作简洁、分辨率高的优势&#xff0c;在浅水域勘察中具有很大的应用前景。目前&#xff0c;二维地质雷达已经有不少应用&#xff0c;三维地质…

面试专题:设计模式

面试时常见的就是的就是让你手写一个单例模式&#xff08;注意单例模式的几种不同的实现方法&#xff09;或者让你说一下某个常见的设计模式在你的项目中是如何使用的&#xff0c;另外面试官还有可能问你抽象工厂和工厂方法模式的区别、工厂模式的思想这样的问题。 建议把代理模…

C++核心编程——详解运算符重载

文章目录&#x1f4ac; 一.运算符重载基础知识①基本概念②运算符重载的规则③运算符重载形式④运算符重载建议 二.常用运算符重载①左移(<<)和右移(>>)运算符重载1️⃣重载后函数参数是什么&#xff1f;2️⃣重载的函数返回类型是什么&#xff1f;3️⃣重载为哪种…

Web测试有哪些基本要点?软件测试找第三方软件检测机构靠谱吗?

互联网时代的到来&#xff0c;让Web应用成为了人们生活和工作中不可或缺的一部分。随着Web应用的快速发展&#xff0c;Web测试也变得越来越重要。本文将从Web测试的基本要点和第三方软件检测机构的可靠性两方面进行讨论。 一、Web测试的基本要点 1. 安全性测试&#xff1a;评…

JVM(Java Virtual Machine)

JVM &#x1f50e;内存区域划分Program Counter Register(程序计数器)Native Method Stacks(本地方法栈)JVM Stacks(虚拟机栈)区分虚拟机栈与本地方法栈&#x1f36d;栈是线程私有的&#x1f36d; Heap(堆区)Metaspace(元数据区)总结 &#x1f50e;类加载类加载的流程加载验证准…

【Apache-Flink零基础入门】「入门到精通系列」手把手+零基础带你玩转大数据流式处理引擎Flink(有状态的流式处理)

手把手零基础带你玩转大数据流式处理引擎Flink&#xff08;有状态的流式处理&#xff09; 传统批处理批处理的特点批处理执行原理理想方法 流式处理分布式流式处理有状态分布式流式处理有状态分散式流式处理 总结分析 传统批处理 传统批处理数据是指一种数据处理方式&#xff…

什么是文件描述符以及重定向的本质和软硬链接(Linux)

目录 1 什么是文件&#xff1f;什么是文件操作&#xff1f;认识系统接口open 什么是文件描述符认识Linux底层进程如何打开的文件映射关系重定向的本质理解软硬链接扩展问题 1 什么是文件&#xff1f;什么是文件操作&#xff1f; 文件 文件内容 文件属性&#xff08;文件属性…

暴力递归到动态规划(二)

⭐️前言⭐️ 本篇文章是由暴力递归到动态规划篇章的第二篇。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源…

扫码出入库系统在哪些行业使用率最高?服务业绑得最紧密

什么是扫码出入库系统 扫码出入库系统是一种流行的库存管理系统&#xff0c;它使用二维码、条形码或RFID等技术来管理仓库内的物品出入库情况。 使用扫码出入库系统&#xff0c;用户可以通过扫描物品的二维码或条形码&#xff0c;快速地将物品信息录入系统中&#xff0c;同时…

采用sysbench压测mysql详解

文章目录 安装sysbench工具基于sysbench构造测试表和测试数据数据库读写性能测试数据库读性能测试数据库删除性能测试数据库更新索引字段性能测数据库更新非索引字段性能测试数据库插入数据性能测试数据库写性能测试执行完成压测之后可以将run改成cleanup&#xff0c;清除数据 …

LegalAI公开数据集的整理、总结及介绍(持续更新ing…)

诸神缄默不语-个人CSDN博文目录 最近更新日期&#xff1a;2023.6.7 最早更新日期&#xff1a;2023.6.7 文章目录 1. 司法判决预测2. 通用语料3. 其他集成项目4. 推理5. NLU6. NLG1 QA2 文本摘要 7. 信息抽取1 命名实体识别2 句子边界检测&#xff08;分句&#xff09; 1. 司法…

青岛科技大学|物联网工程|物联网定位技术(第二讲)|15:00

目录 物联网定位技术&#xff08;第二讲&#xff09; 1. 卫星的轨道高度与覆盖区域有何关系&#xff0c;试画图给予说明覆盖区地心角与覆盖面积的关系 2. 试给出实际的卫星地面覆盖区和用户空间可视区所对应的半地心角的公式并请给予解释 3. 定位导航卫星为什么一般不采用同…

【集群】LVS负载均衡群集

文章目录 前言一、企业群集应用概述1. 群集的含义1.1 群集的特点1.2 扩展服务器的方式 2. 群集的类型2.1 负载均衡群集&#xff08;Load Balance Cluster&#xff09;2.2 高可用群集&#xff08;High Availability Cluster&#xff09;2.3 高性能运算群集&#xff08;High Perf…

软考A计划-电子商务设计师-模拟试题卷七

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

有一种附件叫做V2附件

大家好&#xff0c;才是真的好。 一般而言&#xff0c;Notes中上传的附件都会对应到某个富文本字段中&#xff0c;这样附件易于处理&#xff0c;也容易进行排版。 最简单的案例就是我们的Notes邮件&#xff0c;附件可以附加在正文中&#xff0c;如下图&#xff1a; 还有我们…

新入职一家公司,接手了个从零开始的项目

开发流程 一个完整的从零开始开发的项目&#xff0c;会涉及到功能设计、数据库设计、项目框架搭建、接口设计与实现等流程&#xff0c;具体可以参考下图。 与我们后端开发有关的主要是功能设计、数据库设计、接口设计与实现这三部分&#xff0c;当然接口设计与实现中也包含项目…

chatgpt赋能python:Python如何快速SEO

Python如何快速SEO Python作为一种通用编程语言&#xff0c;广泛应用于各行各业&#xff0c;包括网站开发和SEO。SEO&#xff08;Search Engine Optimization&#xff09;是通过调整网站的结构和内容来提高其在搜索引擎排名中的位置&#xff0c;从而提高网站的流量和收益。Pyt…