网上看到很多 获取url参数的方法都是原生js写的,分享一下自己基于qs封装的方法,望各位路过大佬指点;
axios 中自带 qs 序列化插件,所以如果项目当中使用axios作为请求工具,利用qs封装 获取url参数和 拼接url参数 就能做到事半功倍
当然单独下载使用 qs 也可以😂
import Qs from 'qs';
/**
* 获取 url 参数
* @param {string} url 'http://baidu.com?id=1&name=laowang'
* @returns 出参 { id: 1, name: 'laowang' }
*/
export const getUrlParams = (url) => {
const index = url.indexOf('?');
if (index === -1) return {};
const params = url.slice(index + 1);
return Qs.parse(params);
};
/**
* 合并url地址和参数 序列化
* @param {string} url 'http://baidu.com'
* @param {object} params { id: 1, name: 'laowang' }
* @returns 出参 'http://baidu.com?id=1&name=laowang'
*/
export const joinPramas = (url, params) => {
const index = url.indexOf('?');
if (index !== -1) {
url = url.slice(0, index);
}
if (JSON.stringify(params) == '{}') return url;
// Qs.stringify 序列化之后会对一些参数进行编码,这里用decodeURIComponent解码
return decodeURIComponent(`${url}?${Qs.stringify(params)}`);
};