You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React/Typescript路由props应使用什么类型?如何从中获取查询参数值?

解决方案

方法1:使用浏览器原生URLSearchParams(无额外依赖,优先推荐)

现代浏览器内置了URLSearchParams API,不需要自行写解析逻辑,也不需要安装第三方依赖,直接处理你拿到的props.location.search即可:

const Auth = (props: RouteComponentProps) => {
  const searchParams = new URLSearchParams(props.location.search);
  // 直接获取redirect_to参数值
  const redirectTo = searchParams.get('redirect_to');
  
  // 配套常用方法
  // 判断参数是否存在:searchParams.has('redirect_to')
  // 获取同键名的多个参数值:searchParams.getAll('xxx')
}

方法2:React Router v6 内置Hook(如果你用的是v6版本)

如果你的项目已经升级到React Router v6,可以直接用官方提供的useSearchParams Hook,写法更简洁:

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

const Auth = () => {
  const [searchParams] = useSearchParams();
  const redirectTo = searchParams.get('redirect_to');
}

额外注意事项

你当前AppRoute的实现存在传参错误,现在的写法是把所有路由props挂载到了组件的props.props属性下,正确的写法应该把路由props展开传递:

<Route
  {...rest}
  render={(routeProps) => <Component {...routeProps}/>}
/>

如果项目中已经引入了query-string这类常用的查询参数处理库,也可以直接调用它的parse方法处理props.location.search,效果和原生API一致。

内容的提问来源于stack exchange,提问作者Leff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:15:04