【问题标题】:React router not getting query params反应路由器没有得到查询参数
【发布时间】:2021-10-29 03:30:13
【问题描述】:

我正在尝试将 mandatory 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)' ... />

我至少可以到达网址,但颜色和类型 未定义。

【问题讨论】:

    标签: reactjs react-router query-parameters


    【解决方案1】:

    在为您的路线渲染的组件上 - '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');
    

    参考

    Get Search Query using URLSearchParams

    【讨论】:

    • 好的,谢谢。也许我不够清楚。网址不灵活,所以我想强制它。至少颜色参数应该始终存在。所以我需要将 url 与 react-router 完全匹配。尝试此<Route path='de/something?color=:color&type=:type' ... /> 时,它只是找不到此网址,并且颜色和类型未定义,所以我的猜测是我需要更改一些内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2018-06-09
    • 2017-06-14
    • 2020-10-02
    相关资源
    最近更新 更多