如何使用react比较从url到id的查询值?

时间:2019-05-21 09:40:46

标签: reactjs

我想检查url是否包含?query_param,然后获取其值并将该值与ID进行比较。

考虑网址/ path / 20?query_parm = 2234

我必须获取param_id并将其与商品ID进行比较。

所以我做下面的事情,

handle_location = (path) => {
    let opened_item, param_id;
       param_id = new 
           URLSearchParams(this.props.location.search).get('query_param');
       if (this.state.items) {
            opened_item = this.state.items.find(item => item.id === 
            param_id);
        }
};

项目的数据结构如下,

items = [{
              id: 2244;
              attributes: something;
          }
          {  
              id: 33;
              attributes: nothing;
          }]

但是这给了open_item值一个不确定的,因为item.id永远不等于param_id ...因为类型不同。

我该如何解决...或者有更好的方法从url中查找query_param并获取其值,并相应地使用它来查找与query_param值匹配的项目。

3 个答案:

答案 0 :(得分:0)

您将需要将两个值都转换为相同的类型(数字或字符串),然后执行比较,或者可以使用==运算符来尝试自动强制类型(不推荐) 。如果没有任何一项与ID相匹配,您也可以随时退回到默认值。

if (this.state.items) {
    opened_item = this.state.items.find(item => item.id === 
    param_id) || 'some default value'
}

答案 1 :(得分:0)

尝试: const param_id = this.props.match.params.id

答案 2 :(得分:0)

鉴于您了解两种数据类型都是不同的,因此可以避免使用严格的相等性和杠杆类型强制性

item.id == param_id

最有效的方法是在比较之前将param_id转换为适当的类型

param_id = parseInt(param_id, 10);

这意味着一次转换,您可以保持严格的平等性