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

Vue2 + TS,分路径参数、查询参数、装饰器组件 / Vue.extend 两种写法,同时补充类型约束、监听路由、动态路由取值。

前置说明Vue2 路由对象$route.params动态路径参数如/user/:id$route.queryURL 查询参数如/user?namexxx1. 基础用法class 装饰器组件主流写法1.1 获取 query 参数?keyval路由配置// router/index.ts import Vue from vue import Router from vue-router Vue.use(Router) export default new Router({ routes: [ { path: /demo, name: Demo, component: () import(/views/Demo.vue) } ] })访问地址/demo?name张三age18组件代码template div p姓名{{ name }}/p p年龄{{ age }}/p /div /template script langts import Vue from vue import Component from vue-class-component Component export default class Demo extends Vue { // 直接在生命周期取值添加类型 name!: string age!: number created() { // query 取值 this.name this.$route.query.name as string this.age Number(this.$route.query.age) } } /script1.2 获取 params 动态路由参数/:id路由配置routes: [ { path: /user/:id, // 动态参数 id name: User, component: () import(/views/User.vue) } ]访问地址/user/1001组件取值script langts import Vue from vue import Component from vue-class-component Component export default class User extends Vue { userId!: number created() { // params 取值 this.userId Number(this.$route.params.id) } } /script2. Vue.extend 写法无装饰器import Vue from vue export default Vue.extend({ data() { return { id: 0, username: } }, created() { // params this.id Number(this.$route.params.id) // query this.username this.$route.query.username as string } })3. 路由参数类型定义TS 进阶推荐给$route自定义参数类型消除any警告提升类型提示。3.1扩展 Vue 路由类型新建src/types/vue-router.d.tsimport vue-router declare module vue-router { interface RouteParams { id?: string } interface RouteQuery { name?: string age?: string } }3.2组件直接使用TS 会自动识别参数类型无需强转created() { // params 自带类型 const id this.$route.params.id // query 自带类型 const name this.$route.query.name }4. 路由跳转并传参配套使用4.1 传 query 参数// 编程式导航 this.$router.push({ path: /demo, query: { name: 李四, age: 20 } })4.2 传 params 参数必须搭配 name routes 配置动态参数path params 不生效this.$router.push({ name: User, // 路由配置里的 name params: { id: 1002 } })5. 监听路由变化同组件路由跳转组件不刷新当路由地址改变但组件复用如/user/1→/user/2created/mounted不会重新执行需要watch监听script langts import Vue from vue import Component from vue-class-component Component({ watch: { // 监听整个路由对象 $route(to) { console.log(新参数, to.params.id, to.query.name) this.handleRouteParams() } } }) export default class User extends Vue { handleRouteParams() { const id Number(this.$route.params.id) console.log(当前id, id) } created() { this.handleRouteParams() // 首次进入执行 } } /script常见坑 注意点params 参数永远是 string 类型路由解析后params值默认字符串数字务必手动Number()转换。path params无效传params只能用name跳转。刷新页面 params 丢失params 不会保留在 URL 地址栏刷新丢失query会拼接在地址栏刷新保留。TS 提示 $route 不存在检查路由是否全局挂载、shims文件是否正常。严格模式下!非空断言 若参数必传使用变量!: 类型绕过 TS 空值校验
http://www.zskr.cn/news/1397640.html

相关文章:

  • 别再手动改写!用这6个嵌套式Prompt链,让ChatGPT自动生成符合出版级审校标准的创意文本
  • 为什么大额交易者与高频散户,都盯上了“交易所标准+自定义保证金”?
  • 【AI 时代软件工程师的算法图谱】04 链表操纵:指针的艺术与内存管理
  • 应对Claude官方API限流如何通过Taotoken实现无缝切换与降级
  • Light: Science Applications|从“光电转换”到“全光计算”:光纤传感的一次底层革命
  • 正规美术艺考培训的核心技术:中考美术艺考培训画室、中考美术艺考集训画室、美术艺考培训机构、美术艺考培训画室、美术艺考校考培训机构选择指南 - 优质品牌商家
  • 【技术判断力:法则一】3、如何找到唯一且正确的架构目标?4步定目标+6问判方案+实战案例
  • 为什么 Chunk(分块)策略,会决定 RAG 的效果上限?
  • 20260127-AIDeepSeek-ailwxz-e-18219-哪个AI工具写论文比较好?实测8款AI论文生成工具,图表公式+AI率+知网查重!-101213
  • 2026成都打印机租赁:成都周边打印机出租、成都周边打印机租赁、成都彩色打印机出租、成都打印机出租公司推荐、成都打印机出租哪家好选择指南 - 优质品牌商家
  • 2026年Q2邢台地区商砼站直销厂商盘点与选型指南 - 2026年企业资讯
  • 一文读懂AI智能体时代的OPC开源共创社区
  • PICT成对测试工具:如何用数学思维减少80%测试用例的终极指南
  • 浏览器端敏感信息检测实践:Hx0 数据卫士(Hx0 DataGuard)功能梳理与使用体会
  • 2026优质矩形不锈钢管供应公司TOP10推荐:方形不锈钢管、无缝不锈钢管、焊接不锈钢管、矩形不锈钢管、碳钢管件选择指南 - 优质品牌商家
  • 硬件知识 cadence16.6 导入log 的笔记及其他问题
  • 2026现阶段西安废线路板回收平台可靠合作方深度解析 - 2026年企业资讯
  • 阿里 Qwen3.7-Max 编程能力飙升至全球第二!Code Arena 盲测 1541 分,超越 Claude Opus 4.6
  • ESP32-CAM + YOLOv5实战:手把手教你搭建低成本智能监控(附Python服务端完整代码)
  • 影刀RPA店群自动化声明式配置管理:从命令式脚本到期望状态调和
  • Day36
  • 构建可扩展后端系统:事件驱动架构与消息队列应用
  • 2026夏季纯棉文化衫新趋势:定制你的个性清凉,穿出专属团队风采
  • IT68353:DP 1.4 + HDMI 2.0 + USB-C 三合一转 HDMI 2.0 单芯片KVM切换方案
  • 从 HTTP 到 HTTPS 再到 HTTP/3:全网最通俗详解,协议演进 + 加密原理 + 握手流程一网打尽
  • Jupyter Notebook图片显示全攻略:从HTML到OpenCV,四种方法优缺点实测
  • 微机原理-实验4 8254 定时/计数器实验
  • 2026年Q2河北玻璃钢通风管道定制厂家网址选择指南 - 2026年企业资讯
  • Python缺失值检测四大方法原理与陷阱详解
  • 复数流态矩阵计算器 · 使用说明