react router 中主要通过三种方式实现路由间的数据传递
- 路径参数:从 URL 中提取
- 查询参数:URL 中跟在
?
后的键值对 - 状态参数:可传递复杂的临时对象
路径参数
在 URL 路径片段前加上 :
,表示该片段为路径参数
1 | { |
在 NavLink 或 navigate
函数的 to
字符串中传入参数值
1 | const teamId = 123; |
在组件中通过 useParams
函数获取参数
1 | import { useParams } from 'react-router'; |
查询参数
在 NavLink 或 navigate
函数的 to
字符串中传入查询参数值
1 | const teamId = 123; |
使用 useSearchParams
函数来管理当前页面 URL 的查询参数
1 | import { useSearchParams } from 'react-router'; |
searchParams
是一个 URLSearchParams
类型的响应式对象,其中提供了 get
、set
等方法来操作查询参数
setSearchParams
函数与状态的 set
函数类似,会触发组件重渲染,同时 URL 中的查询参数也会改变
状态参数
状态参数可用于传递复杂的临时对象,在 NavLink 或 navigate
函数中传入参数值
1 | const state = {name: "Hello"} |
通过 useLocation
函数获取当前页的 location 对象,从中解构出 state 字段
1 | import { useLocation } from 'react-router'; |