获取当前页面query参数
功能描述
用于获取当前 URL 中指定参数名称的参数值。支持从 URL 的查询字符串(search)或哈希(hash)部分获取参数值,并自动处理中文编码问题。
语法
javascript
getQueryString(name: string): string | null
'http://localhost:8080/#/getUrlQuery?user=张三&age=18'
getQueryString('user') // 张三
getQueryString('age') // 18
源码
javascript
/**
* 获取当前页面 URL 中指定参数名的参数值(支持 search 和 hash 部分,自动解码)
* @param {string} name - 要获取的参数名称
* @returns {string|null} - 参数值或 null
*/
function getQueryString(name) {
if (!name || typeof name !== 'string') return null;
// 1. 获取 search 部分
const search = window.location.search || '';
// 2. 获取 hash 部分中的 query
let hashQuery = '';
const hash = window.location.hash || '';
const hashIndex = hash.indexOf('?');
if (hashIndex !== -1) {
hashQuery = hash.substring(hashIndex);
}
// 3. 定义正则,精确匹配参数名
const reg = new RegExp('(?:[?&])' + name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '=([^&]*)');
// 4. 先查 search
let match = reg.exec(search);
if (match && match[1] !== undefined) {
return decodeURIComponent(match[1]);
}
// 5. 再查 hashQuery
match = reg.exec(hashQuery);
if (match && match[1] !== undefined) {
return decodeURIComponent(match[1]);
}
// 6. 未找到
return null;
}
参数
name
: string 类型,必填- 要获取的参数名称
- 如果不传入参数名称,将返回 null
返回值
string
: 如果找到对应的参数值null
: 在以下情况下返回- 未传入参数名称
- URL 中没有查询参数
- URL 中不存在指定的参数名称
- 参数值为空
使用示例
javascript
// 假设当前 URL 为:http://example.com?name=张三&age=18#/path?color=red
// 1. 基础用法
getQueryString('name') // 返回: "张三"
getQueryString('age') // 返回: "18"
// 2. 从 hash 中获取参数
getQueryString('color') // 返回: "red"
// 3. 处理不存在的参数
getQueryString('hobby') // 返回: null
// 4. 处理中文参数
// URL: http://example.com?city=北京
getQueryString('city') // 返回: "北京"
// 5. 无参数调用
getQueryString() // 返回: null
特性
- 支持从 URL 查询字符串(
?
后的部分)获取参数 - 如果查询字符串中没有找到,会尝试从 hash 部分(
#
后的查询字符串)获取参数 - 自动处理 URL 编码,支持中文参数
- 使用正则表达式精确匹配参数名称,避免部分匹配错误
注意事项
- 该方法依赖于
window.location
对象,因此只能在浏览器环境中使用 - 如果 URL 中同一个参数名出现多次,只会返回第一个匹配的值
- 参数值区分大小写
- 建议在组件挂载后(
mounted
钩子中)使用此方法,以确保 URL 已经完全加载
使用场景
- 页面初始化时需要根据 URL 参数进行配置
- 处理第三方回调携带的参数
- 根据 URL 参数控制页面展示内容
- 分享链接时携带参数的解析