vue获取url参数一直是null

思否 问答 已采纳 👍 3 含 AI 优化版

问题

vue获取url参数一直是null

在 SegmentFault 查看原问题 →

由大模型辅助整理,保留原意,优化结构与可读性。

问题概述

提问者在 Vue 项目中获取 URL 参数时,结果始终是 null,怀疑是获取参数的方式用错了。

涉及技术

Vue、Vue Router、URL 解析

期望结果

理解为什么获取到的参数是 null,并得到正确获取 URL 参数的方式。

回答

原始回答

2018-03-09

应该获取hash你获取search了

AI 优化 · 回答整理

解答思路

问题的根源在于路由模式和参数获取方式不匹配:如果项目使用的是 hash 模式路由(# 开头),实际参数是拼接在 location.hash 里的,而提问者却用 location.search 去获取,自然拿不到值,一直是 null

详细说明

  • Vue Router 默认(或常见配置)使用 hash 模式,URL 形如 http://example.com/#/page?id=1,此时 ?id=1hash 部分(#/page?id=1)的一部分,location.search 拿到的只是 # 前面的查询字符串(大多数情况下是空的),所以取不到参数。
  • 正确的做法是从 location.hash 中解析出 ? 之后的部分,或者在 Vue 组件里直接使用 this.$route.query(对应 ?xxx=xxx 的参数)或 this.$route.params(对应路由路径中的动态段),由 Vue Router 帮你处理好 hash/history 模式的差异,而不必手动解析 location

小结

在 hash 模式的路由下,URL 参数藏在 location.hash 而不是 location.search 里;在 Vue 项目中更推荐直接使用 this.$route.query / this.$route.params 获取参数,避免手动解析带来的模式混淆问题。

由大模型辅助整理,保留原意,补充结构与代码格式。

回答转载自 SegmentFault

评论

评论功能即将开放。你也可以通过 邮件GitHub Issue 反馈。