首页 > 解决方案 > 从单个 URL 获取多个参数的最新关键参数?

问题描述

当用户在页面'a'中并在表单输入字段中写入内容然后从页面a到页面b并从那里返回页面a时,如果用户想从url获取数据,可能有两个同名例如,这是 url?name=james&name=alex 我的问题是如何获取最新的“名称”,例如名称name=alex是新的。这是我从网址获取的方式:

const query = window.location.toString().split("?")[1];

const urlParams = new URLSearchParams(query);


const Name = urlParams.get("name") || props.order?.name;
<Form.Item label={t( "orders.name")} name="name" initialValue={Name || ""}>
  <Input type="string" />
</Form.Item>

标签: javascripthtmlreactjstypescript

解决方案


这个答案是从HERE采用的。

相反,您应该将您的名称编码为一个数组并将其设置为 name 参数。添加新名称时,使用Array.push(ITEM)来添加到末尾,并获取最近添加的项目使用Array[Array.length - 1]

//URL to array:
function URLToArray(url, param) {
    return url.substring(url.indexOf(param + '=') + param.length + 1).split('&')[0].split('_');
}

//Array to URL:
function ArrayToURL(array, param) {
  return param + '=' + array.join('_');
}

/*************************************/

//You can then use this as such:

// Get Array
var myArray = URLToArray('https://google.com?name=Bob_Joe_Tom&state=Alaska_Texas_Main', 'name');

console.log(myArray);

// Get URL
myArray.push('Steph'); //Lets add a name to the array
var myNameUrl = 'www.google.com?' + ArrayToURL(myArray, 'name');


console.log(myNameUrl);

我已经这样做了,因此您也可以在 url 上拥有任意数量的数组,因此我state在示例中具有该值,只是为了表明它可以区分两个数组。


推荐阅读