React Router 6 获取路由参数

一、params参数

传递params参数

路由链接(携带参数):<Link to='/demo/test/18'}>详情</Link>

注册路由(声明接收):<Route path="/demo/test/:id" component={Test}/>

获取params参数

javascript 复制代码
import React from 'react';
import { Routes, Route, useParams } from 'react-router-dom';
import User from './pages/User.jsx'

function ProfilePage() {
  // 获取URL中携带过来的params参数,"/demo/test/:id"
  let { id } = useParams();
  
  return <>{id}</>
}

二、search参数

传递search参数

路山链接(携带参数):<Link to='/demo/test?name=tom&age=18'}>详情</Link>

注册路由(无需声明,正常注册即可):<Route path="/demo/test" component={Test}/>

获取search参数

javascript 复制代码
import React from 'react'
import {useSearchParams} from 'react-router-dom'

export default function Detail() {
	const [search,setSearch] = useSearchParams()
	const name= search.get('name')
	const age= search.get('age')
	return (
		<ul>
			<li>
				<button onClick={()=>setSearch('name=哈哈&age=11')}>点我更新一下收到的search参数</button>
			</li>
			<li>名字:{name}</li>
			<li>年龄:{age}</li>
		</ul>
	)
}

三、state参数

传递state参数

路由锋按(携带参数):<Link to={{path:'/demo/test',state:{name:'tom',age:18}}}>详悄</Link>

注册路由(无需声明,正常注册即可):<Route path="/demo/test"component={Test}/>

获取state参数

javascript 复制代码
import React from 'react'
import {useLocation} from 'react-router-dom'

export default function Detail() {
	const {state} = useLocation()
	console.log('@',x)
  // x就是location对象: 
	/*
		{
      hash: "",
      key: "ah9nv6sz",
      pathname: "/login",
      search: "?name=tom&age=18",
      state: {name: 'tom', age: 18}
    }
	*/
	return (
		<ul>
			<li>名字:{state.name}</li>
			<li>年龄:{state.age}</li>
		</ul>
	)
}
相关推荐
烟袅4 分钟前
从零开始:前端如何通过 `fetch` 调用 大模型(详解)
前端·javascript·llm
摇滚侠15 分钟前
Vue 项目实战《尚医通》,完成确定挂号业务,笔记46
java·开发语言·javascript·vue.js·笔记
Electrolux21 分钟前
基于WASM的纯前端Office解决方案:在线编辑/导入导出/权限切换(已开源)
前端
合作小小程序员小小店40 分钟前
web网页开发,在线%医院诊断管理%系统,基于Idea,html,css,jQuery,java,jsp,ssh,mysql。
java·前端·css·数据库·jdk·html·intellij-idea
软件技术NINI42 分钟前
html css js网页制作成品——html+css+js5 页 jk制服附源码
javascript·css·html
爱学习的程序媛1 小时前
【Web前端】Vue2与Vue3核心概览与优化对比
前端·javascript·vue.js·typescript
li@h1 小时前
如何在电脑端访问小程序时在胶囊添加一个全屏和缩放功能
前端
aiguangyuan2 小时前
React 18 源码解读(一)
javascript·react·前端开发
LFly_ice2 小时前
学习React-23-React-router
前端·学习·react.js
haofafa2 小时前
JavaScript性能优化实战
开发语言·javascript·性能优化