我想检查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值匹配的项目。
答案 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);
这意味着一次转换,您可以保持严格的平等性