reactjs - 反应路由器没有得到查询参数
问题描述
我正在尝试将强制url 参数与 react-router v3 (3.2.6) 匹配,但似乎没有得到它们。网址如下:
de/something?color=red&type=square
我尝试对路由进行的匹配如下:
<Route path='de/something?color=:color&type=:type' ... />
当我记录它时,它似乎得到了params
(颜色和类型),但值为undefined
. 我正在直接记录ownProps.params
来自路由器的日志。
我不确定为什么它可以看到参数在那里但看不到它的价值。我定义错了什么?
我知道我可以从位置本身获取查询参数,但我想直接匹配这些查询参数,因为此 url 必须具有这 2 个参数。还有一个免责声明,我无法升级到路由器版本 4 或 5。
提前致谢。
更新:当我使参数可选时:
<Route path='de/something(?color=:color&type=:type)' ... />
我至少可以到达网址,但颜色和类型值未定义。
解决方案
在为您的路线渲染的组件上 -'de/something?color=:color&type=:type'
您可以将 searchParams 设置为
// pass the search params from the location prop provided by react router
// to URLSearchParams constructor
const searchQuery = new URLSearchParams(props.location.search);
// use the inbuilt methods to get the value for your searchQuery
const color = searchQuery.get("color");
const type = searchQuery.get('type');
参考
推荐阅读
- django - 当只有一条记录时,是否有必要遍历传递给 django 模板的查询集?
- java - graphics2D.drawImage() 上的异常
- java - 运行 JAR(Fxyz3d 库)时出现 FileSystemNotFoundException
- c++ - 是否可以通过模板创建带有变量类型下标的数组?
- sql - 此 SQL 请求中的语法错误在哪里?
- android - Xamarin.Forms - Android - 在 ContentPage.ToolbarItems 中更改三个点或省略号图标
- postgresql - 角色权限和用户角色,正确映射?
- python - Python 项目的预提交挂钩
- python - 为什么我自己的函数看不到本地导入的包?
- c# - 如何制作 TopMost 拨动开关