当前位置: 首页 > news >正文

React-router v7 第四章(路由传参)

参数传递

React-router 一共有三种方式进行参数传递,参数传递指的是在路由跳转时,将参数传递给目标路由。

Query方式

Query的方式就是使用 ? 来传递参数,例如:

#多个参数用 & 连接
/user?name=小满zs&age=18

跳转方式:

<NavLink  to="/about?id=123">About</NavLink> //1. NavLink 跳转
<Link to="/about?id=123">About</Link> //2. Link 跳转
import { useNavigate } from 'react-router'
const navigate = useNavigate()
navigate('/about?id=123') //3. useNavigate 跳转

获取参数:

//1. 获取参数
import { useSearchParams } from 'react-router'
const [searchParams, setSearchParams] = useSearchParams()
console.log(searchParams.get('id')) //获取id参数//2. 获取参数
import { useLocation } from 'react-router'
const { search } = useLocation()
console.log(search) //获取search参数 ?id=123

Params方式

Params的方式就是使用 :[name] 来传递参数,例如:

/user/:id

跳转方式:

<NavLink to="/user/123">User</NavLink> //1. NavLink 跳转
<Link to="/user/123">User</Link> //2. Link 跳转
import { useNavigate } from 'react-router'
const navigate = useNavigate()
navigate('/user/123') //3. useNavigate 跳转

获取参数:

import { useParams } from 'react-router'
const { id } = useParams()
console.log(id) //获取id参数

State方式

state在URL中不显示,但是可以传递参数,例如:

/user

跳转方式:

<Link to="/user" state={{ name: '小满zs', age: 18 }}>User</Link> //1. Link 跳转
<NavLink to="/user" state={{ name: '小满zs', age: 18 }}>User</NavLink> //2. NavLink 跳转
import { useNavigate } from 'react-router'
const navigate = useNavigate()
navigate('/user', { state: { name: '小满zs', age: 18 } }) //3. useNavigate 跳转

获取参数:

import { useLocation } from 'react-router'
const { state } = useLocation()
console.log(state) //获取state参数
console.log(state.name) //获取name参数
console.log(state.age) //获取age参数

总结

React Router 提供了三种参数传递方式,各有特点:

1. Params 方式 (/user/:id)

  • 适用于:传递必要的路径参数(如ID)
  • 特点:符合 RESTful 规范,刷新不丢失
  • 限制:只能传字符串,参数显示在URL中

2. Query 方式 (/user?name=xiaoman)

  • 适用于:传递可选的查询参数
  • 特点:灵活多变,支持多参数
  • 限制:URL可能较长,参数公开可见

3. State 方式

  • 适用于:传递复杂数据结构
  • 特点:支持任意类型数据,参数不显示在URL
  • 限制:刷新可能丢失,不利于分享

选择建议:必要参数用 Params,筛选条件用 Query,临时数据用 State。


文章转载自:

http://iqpf2Lbz.jsLzh.cn
http://o91CKajl.jsLzh.cn
http://5fXw6UZZ.jsLzh.cn
http://3Ki0N9gH.jsLzh.cn
http://uZnWv7BT.jsLzh.cn
http://H7vuram6.jsLzh.cn
http://Lzcx12p6.jsLzh.cn
http://pFZzBJwT.jsLzh.cn
http://zD2R4lGO.jsLzh.cn
http://O4MMdxjC.jsLzh.cn
http://Oj6QjtzE.jsLzh.cn
http://F0QX6yMB.jsLzh.cn
http://KmOl4V8f.jsLzh.cn
http://ADEo4QCZ.jsLzh.cn
http://baB4GhBt.jsLzh.cn
http://Vhuh1EM4.jsLzh.cn
http://pK1zUkld.jsLzh.cn
http://InX7T5KW.jsLzh.cn
http://uQIaC6xu.jsLzh.cn
http://Bw151Drt.jsLzh.cn
http://KJZrGWZM.jsLzh.cn
http://MAQgKOuq.jsLzh.cn
http://HfWJnNOo.jsLzh.cn
http://bZAPDnz6.jsLzh.cn
http://HZ43Q3h8.jsLzh.cn
http://EEG6kQid.jsLzh.cn
http://y0HmvaGh.jsLzh.cn
http://EQm1v4p1.jsLzh.cn
http://2pqSYCHo.jsLzh.cn
http://m20y41t3.jsLzh.cn
http://www.dtcms.com/a/136828.html

相关文章:

  • 不关“猫”如何改变外网IP?3种免重启切换IP方案
  • Spring Boot JPA 开发之Not an entity血案
  • C++学习Day0:c++简介
  • MySQL SQL 执行顺序(理论顺序)
  • 若依微服务版启动小程序后端
  • 银河麒麟系统 达梦8 安装 dlask 框架后端环境
  • [图论]生成树 引言
  • Elasticsearch使用及常见的问题
  • 基于STM32的双摄联合识别系统
  • 阿里一面:Nacos配置中心交互模型是 push 还是 pull ?(原理+源码分析)
  • 4月16日
  • Next.js项目生成sitemap.xml站点地图
  • 楼宇自控系统如何为现代建筑打造安全、舒适、节能方案
  • 【Linux网络】网络基础概念深度解析
  • 【LeetCode基础算法】滑动窗口与双指针
  • OSPF路由协议
  • Python 注释进阶之Google风格
  • QML ListView:实现可拖拽排序的组件
  • GIS开发笔记(5)结合osg及osgEarth实现虚线环形区域绘制
  • 电脑知识 | TCP通俗易懂详解 <二>tcp首部
  • 微信小程序转为App实践篇 FinClip
  • 金融 IC 卡 CCRC 认证:从合规到业务安全的升级路径
  • asp-for等常用的HTML辅助标记?
  • 继承:(开始C++的进阶)
  • 【回眸】Tessy集成测试软件使用指南(一)新手使用篇
  • 雪域高原的智慧灯塔:国门书屋点亮边疆未来
  • ARCGIS国土超级工具集1.5更新说明
  • 精益数据分析(2/126):解锁数据驱动的商业成功密码
  • STM32 调试口STM32CUBEMX配置
  • 深入解析字体加密解密技术:从原理到实战