当前位置: 首页 > news >正文

封装 获取paramsByKey 方法

功能介绍

这段代码定义了一个名为 getParamsByKey 的函数,用于从当前页面的 URL 查询参数中提取指定键(key)对应的值。函数通过解析 window.location.search 获取查询参数,并返回匹配键的值。

代码解析

输入参数

  • key: string:需要查询的 URL 参数键名。

逻辑流程

  1. 检查当前环境是否支持 window 对象(确保在浏览器端运行)。
  2. 获取 window.location.search,即 URL 中 ? 后的查询字符串。
  3. 移除 ? 并分割参数为键值对数组(split('&'))。
  4. 遍历数组,匹配键名与输入 key 一致的项,提取对应值。

返回值

  • 返回匹配的字符串值;若无匹配项,返回空字符串 ''

使用示例

假设当前 URL 为 https://example.com?name=test&id=123

const name = getParamsByKey('name'); // 返回 'test'
const id = getParamsByKey('id');     // 返回 '123'
const unknown = getParamsByKey('foo'); // 返回 ''

注意事项

  1. 环境兼容性:函数内校验了 window 对象存在性,避免在非浏览器环境(如 SSR)报错。
  2. 参数格式:仅支持简单键值对(如 key=value),复杂值需额外处理(如 URL 解码)。
  3. 默认值:未匹配时返回空字符串,调用方需自行处理边界情况。

优化建议

  1. 添加 decodeURIComponent 处理值中的特殊字符(如 %20)。
  2. 扩展为返回全部参数的接口(如 getAllParams),减少多次调用开销。
  3. 使用 URLSearchParams API(现代浏览器支持)简化逻辑:
    export const getParamsByKey = (key: string): string => {let value = '';if (typeof window !== 'undefined') {const { search } = window.location;const queryArr = search.replace('?', '').split('&');queryArr.forEach((ele) => {if (ele && ele.split('=')[0] === key) {// eslint-disable-next-line prefer-destructuringvalue = ele.split('=')[1];}});}return value;
    };
    

http://www.dtcms.com/a/266014.html

相关文章:

  • Unity-MMORPG内容笔记-其一
  • 【tensorflow2.6.0 一系列相关报错记录】
  • 踩坑日记:虚拟机桥接模式无法连接网卡
  • Intellij IDEA中Maven的使用
  • 学习C++、QT---17(C++ 记事本项目的雏形实现)
  • 深度学习1(深度学习和机器学习的区别,神经网络)
  • JNI实现Android音视频播放器的设计方案
  • 万字长文 探索 AI 智能体:架构设计与实际应用
  • Compose 常用命令详解——AI教你学Docker
  • Spring Cloud(微服务部署与监控)
  • P1073 [NOIP 2009 提高组] 最优贸易
  • qiankun - 微前端
  • 从0开始学习R语言--Day37--CMH检验
  • 基于InVEST模型生境质量评估、基于SoLVES社会价值评估、耦合度分析
  • 二位差分矩阵
  • L2CAP协议详解:分段重组、QoS控制与多协议复用设计(面试宝典)
  • SpringBoot论坛系统安全测试实战报告
  • 深入理解 Redis Cluster:分片、主从与脑裂
  • 轮椅租赁小程序开发源码php
  • 4-6WPS JS宏自定义函数变长参数函数(实例:自定义多功能数据统计函数)学习笔记
  • 【进阶篇-消息队列】——Kafka如何实现事务的
  • 贪心专题练习
  • 伞兵 钓鱼的肝
  • 【系统如何知道每个软件该去哪个源下载】
  • spring6合集——spring概述以及OCP、DIP、IOC原则
  • 大模型解码策略(Top-k Top-p Temperature)
  • 【前端开发】Uniapp分页器:新增输入框跳转功能
  • uniapp加上全局水印
  • 【如何判断Linux系统是Ubuntu还是CentOS】
  • 【Laravel】 Laravel 智能验证规则生成器