【JS】URLSearchParams 对象(以对象的形式上传参数到url)

news/2024/7/19 15:13:45 标签: js, URLSearchParams

文章目录

    • 一、基本用法
    • 二、实例方法
    • 三、实践运用

一、基本用法

此功能某些浏览器尚在开发中,兼容性可能不是很好。

js">// init: 参数可选,为一个 USVString
var URLSearchParams = new URLSearchParams(init);
  • 示例:
js">// 传入一个字符串字面值
var searchParams = new URLSearchParams('https://example.com?foo=1&bar=2');
console.log(searchParams.toString());	// foo=1&bar=2
// 查找字符串
console.log(searchParams.has('foo'));	// true
// 获取字符串对应的数据
console.log(searchParams.get('foo'));	// 1
// 设置字符串
searchParams.set('ttl','3');	// 1
console.log(searchParams.toString());	// foo=1&bar=2&ttl=3


// 传入一个 sequence
var params3 = new URLSearchParams([["foo", 1],["bar", 2]]);
console.log(params3.toString());	// foo=1&bar=2

// 传入一个 record
var params4 = new URLSearchParams({"foo" : 1 , "bar" : 2});
console.log(params4.toString());	// foo=1&bar=2

url的打印结果:
在这里插入图片描述

二、实例方法

方法描述
append()插入一个指定的键/值对作为新的搜索参数。
delete()从搜索参数列表里删除指定的搜索参数及其对应的值。
entries()返回一个iterator可以遍历所有键/值对的对象。
get()获取指定搜索参数的第一个值。
getAll()获取指定搜索参数的所有值,返回是一个数组。
has()返回 Boolean 判断是否存在此搜索参数。
keys()返回iterator 此对象包含了键/值对的所有键名。
set()设置一个搜索参数的新值,假如原来有多个值将删除其他所有的值。
sort()按键名排序。
toString()返回搜索参数组成的字符串,可直接使用在 URL 上。
values()返回iterator 此对象包含了键/值对的所有值。
  • 示例:
js">var paramsString = "q=URLUtils.searchParams&topic=api"
var searchParams = new URLSearchParams(paramsString);

for (let p of searchParams) {
  console.log(p);
}

searchParams.has("topic") === true; // true
searchParams.get("topic") === "api"; // true
searchParams.getAll("topic"); // ["api"]
searchParams.get("foo") === null; // true
searchParams.append("topic", "webdev");
searchParams.toString(); // "q=URLUtils.searchParams&topic=api&topic=webdev"
searchParams.set("topic", "More webdev");
searchParams.toString(); // "q=URLUtils.searchParams&topic=More+webdev"
searchParams.delete("topic");
searchParams.toString(); // "q=URLUtils.searchParams"

三、实践运用

  • 函数封装:
export function toSearch(record: Record<string, string>) {
  return new URLSearchParams(record).toString();
}
  • 使用
js">// Button 按钮是adtd里面的,这里只展示局部代码
<Button
  type="link"
  href={`#/project/flowpage?${toSearch({
    id: 666,
    name: "liu",
  })}`}
  target="_blank"
>
  点击按钮
</Button>
  • 效果:
js">// 前面域名指向当前网页的域名,这里暂用...省略
...#/project/flowpage?id=666&name="liu"

http://www.niftyadmin.cn/n/509370.html

相关文章

【CSS】calc 函数(动态计算长度值)

文章目录基本用法基本用法 calc() 函数用于动态计算长度值。 需要注意的是: 1. 运算符前后都需要保留一个空格&#xff0c;例如&#xff1a; width: calc(100% - 10px)&#xff1b; 2. 任何长度值都可以使用calc()函数进行计算&#xff1b; 3. calc()函数支持 "",…

【VScode】退出全屏和使用全屏

文章目录基本用法基本用法 有时候不小心瞎按到了什么&#xff0c;导致vscode全屏了&#xff0c;这时候想要退出却找不到方式&#xff0c;这就有的尴尬了&#xff0c;最后发现其实只要按F11快捷键就可以自动切换全屏了 在【查看】中找到【外观】&#xff0c;再在里面找到【全屏】…

【封装 Hooks】useHash(获取和更新 URL hash 值)

文章目录基本用法基本用法 封装的文件&#xff1a;useHash.ts import { useState, useCallback, useEffect } from react;/*** 获取和更新 URL hash 值*/ export const useHash () > {const [hash, setHash] useState(() > window.location.hash);const onHashChange…

【React】Context 跨组件通信

文章目录基本用法案例分析基本用法 在 react 没有类似 vue 中的事件总线来解决这个问题&#xff0c;我们只能借助它们共同的父级组件来实现&#xff0c;将非父子关系装换成多维度的父子关系。react 提供了 context api 来实现跨组件通信, React 16.3 之后的 contextapi 较之前的…

【React】Fragments(<></>)

基本介绍 React 中的一个常见模式是一个组件返回多个元素。Fragments 允许你将子列表分组&#xff0c;而无需向 DOM 添加额外节点。也可以使用<></>的语法来声明 Fragments&#xff0c;它看起来像空标签。但是 Fragments 支持key属性&#xff0c;而 <></&…

【React】Profiler 测量渲染

文章目录Profiler 测量渲染一个 React 应用多久渲染一次以及渲染一次的“代价”。 它的目的是识别出应用中渲染较慢的部分&#xff0c;或是可以使用类似 memoization 优化的部分&#xff0c;并从相关优化中获益。 尽管 Profiler 是一个轻量级组件&#xff0c;我们依然应该在需要…

【JS】toString 和 valueOf 方法

转字符串 toString() Number.prototype.toString() toString() 方法&#xff1a;返回指定 Number 对象的字符串表示形式。语法&#xff1a; /*radix: 指定要用于数字到字符串的转换的基数(从2到36)。 */ numObj.toString([radix])// 参数 - 如果未指定 radix 参数&#xff0…

【Antd】rawData.some is not a function 报错解决方法

文章目录报错信息解决方法报错信息 页面报错 控制台报错 Table.js:109 Uncaught TypeError: rawData.some is not a functionat Table.js:109:17at updateMemo (react-dom.development.js:15867:19)at Object.useMemo (react-dom.development.js:16413:16)at Object.useMe…