首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用React路由器向动态路径添加可选查询参数

问使用React路由器向动态路径添加可选查询参数
EN

Stack Overflow用户
提问于 2022-08-11 22:48:53
回答 1查看 2K关注 0票数 2

我正试图在路径的末尾添加一个可选的查询参数,所以URL看起来如下:/user/1/cars?makeYear=2020或/user/1/cars。有关路线的定义如下。我无法找到关于如何向现有路径添加可选查询参数的指导。例如,以下内容不起作用:

代码语言:javascript
复制
<Route path="user" element={<UserScreen />}>
  <Route path=":id/makeYear?" element={<User/>} />
</Route>

在这里,我认为<Route path=":id/makeYear?" element={<User/>} />会将makeYear标记为一个可选参数,但是不,不起作用。

然后,我认为我应该直接访问组件中的查询参数,因此,考虑到URL是/user/1/cars?makeYear=2020,我可以通过react路由器提供的useLocation api获取useLocation。但是,查询参数也不起作用,因为查询参数将立即从URL中删除(我猜是react路由器.)。

我使用的是react路由器-dom (6.2.2)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-11 22:57:46

react-router-dom不使用queryString进行路由路径匹配。从路由queryString支柱中移除path部件。通过useSearchParams钩子访问组件中的查询参数。

代码语言:javascript
复制
<Route path=":id" element={<User/>} />

..。

代码语言:javascript
复制
import { useSearchParams } from 'react-router-dom';

const User = () => {
  const [searchParams] = useSearchParams();

  const makeYear = searchParams.get("makeYear");
  // handle logic based on makeYear

  ...
};
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73327602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档