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

Vue 路由传参的四种方式

在单页应用里,路由是连接页面与数据的桥梁。Vue Router 提供了四种方式把「参数」从地址栏、内存甚至编译期注入到组件。理解它们的差异,才能在面试和线上故障中游刃有余。

一、路径参数

把参数写进路径,直观且 SEO 友好。

// router.js
{ path: '/user/:userId', component: User }

访问 /user/42,组件内部:

const route = useRoute()
console.log(route.params.userId) // '42'
  • 优点:可收藏、可分享、可被搜索引擎收录。
  • 注意:使用正则捕获可限制类型,如 :userId(\\d+) 只接受数字。

二、查询参数

问号后的 key=value 对,天然支持多值与可选。

router.push({ path: '/user', query: { id: 42, tab: 'profile' } })

组件读取:

const route = useRoute()
console.log(route.query.tab) // 'profile'
  • 场景:分页、筛选、弹窗状态。
  • 陷阱:刷新页面后仍然存在,敏感信息需加密。

三、路由状态参数

state 不会出现在 URL,适合临时或敏感数据。

router.push({ path: '/confirm', state: { orderId: 'xxx' } })

组件读取:

import { useHistoryState } from '@vueuse/core'
console.log(history.state.orderId) // 'xxx'
  • 特性:刷新即消失,同源安全;常用于「下一步」导流。
  • 限制:SSR 场景下为空,因为服务端没有浏览器 history。

四、路由 Props

把路径或查询自动映射为组件 Props,告别 $route 依赖。

{ path: '/user/:id', component: User, props: true }

组件直接:

<script setup>
const props = defineProps(['id'])
</script>
  • 进阶:传入函数可实现自定义映射,如把查询映射为对象。
  • 测试:单元测试无需 mock $route,直接传 Props。

总结

路径参数让 URL 会说话,查询参数让 URL 会传表,状态参数让内存做快递,Props 让组件零耦合。掌握四种姿势,Vue 路由从此游刃有余。


文章转载自:

http://ba5B366Q.hhskr.cn
http://gEKLCFWl.hhskr.cn
http://FAAYLQ6R.hhskr.cn
http://LhOUAoyV.hhskr.cn
http://Gz8364FP.hhskr.cn
http://ef1ZLMrb.hhskr.cn
http://f0OtJ1ZR.hhskr.cn
http://SfJjC4q4.hhskr.cn
http://qPsfwTgn.hhskr.cn
http://qRihImel.hhskr.cn
http://xVam2cQ8.hhskr.cn
http://8FkRpnrE.hhskr.cn
http://1uZpK6tO.hhskr.cn
http://bEnEiahJ.hhskr.cn
http://DgkMENXC.hhskr.cn
http://cpAmQYZb.hhskr.cn
http://SeinablO.hhskr.cn
http://bHSbxoxp.hhskr.cn
http://PDwkgRSA.hhskr.cn
http://LdW7pqZo.hhskr.cn
http://oV6GodBK.hhskr.cn
http://2OmsM9ri.hhskr.cn
http://uwATRKGr.hhskr.cn
http://3nYNJU5p.hhskr.cn
http://tER6Hpls.hhskr.cn
http://NUsGnUIZ.hhskr.cn
http://vUnOG8bO.hhskr.cn
http://INSQqTKZ.hhskr.cn
http://xNPfqAJO.hhskr.cn
http://gVveR1Wc.hhskr.cn
http://www.dtcms.com/a/371746.html

相关文章:

  • HTML 表格基础
  • CD76.【C++ Dev】AVL的模拟实现(1) 以左单旋为切口,分析旋转规律
  • 中国计算机发展史
  • LeetCode刷题记录----20.有效的括号(Easy)
  • 从voice和练习发声谈起
  • 5.python——数字
  • 数据化运营的工作流程
  • llama_factory 安装以及大模型微调
  • Linux | i.MX6ULL 搭建 Web 服务器(第二十章)
  • 量子電腦組裝之三
  • 适配器详细
  • GD32自学笔记:5.定时器中断
  • 前端三件套简单学习:HTML篇1
  • Android --- SystemUI 导入Android Studio及debug
  • 服务器为什么会选择暴雨?
  • Spring Boot + Apache Tika 从文件或文件流中提取文本内容
  • day26|学习前端之算法学习
  • 数据结构之二叉树(2)
  • Mac设置中的安全性缺少“任何来源”
  • 样式化你的 Next.js 应用:CSS 模块、Tailwind CSS 和全局样式
  • Qwen2.5-VL技术详解
  • Claude code 使用笔记
  • FPGA学习笔记——SDR SDRAM的读写(不调用IP核版)
  • C++ 常见面试题汇总
  • cifar10分类对比:使用PyTorch卷积神经网络和SVM
  • 2025算法八股——机器学习——SVM损失函数
  • kafka特性和原理
  • webpack和vite优化方案都有哪些
  • Unity UI 中最干净的点击区域实现:RaycastZone 完整实战讲解
  • Java开发环境配置入门指南