【Vue 路由参数传递】

文章目录

  • [一、使用 `params` 传递参数](#一、使用 params 传递参数)
      • [1. 基本路由格式](#1. 基本路由格式)
      • [2. 可选参数的使用](#2. 可选参数的使用)
      • 代码示例
  • [二、使用 `query` 传递参数](#二、使用 query 传递参数)
      • [1. 基本路由格式](#1. 基本路由格式)
      • 代码示例
  • 总结

一、使用 params 传递参数

1. 基本路由格式

在Vue中,使用params传递参数是通过路由的动态片段来完成的。在路由配置中,使用:定义一个参数占位符,然后在路由跳转时将实际值传递给参数。

javascript 复制代码
const routes = [
  {
    path: '/user/:id', // 定义参数占位符 ':id'
    component: UserProfile
  }
]

定义一个路由 /user/:id,其中 :id 是参数占位符。在路由跳转时传递实际的用户ID值:

javascript 复制代码
// 在代码中进行路由跳转并传递参数
this.$router.push({ path: `/user/${userId}` })

2. 可选参数的使用

通过在路由定义中使用问号(?)来实现。

javascript 复制代码
const routes = [
  {
    path: '/user/:id?', // 定义可选参数 ':id?'
    component: UserProfile
  }
]

/user/user/:id都可以匹配这个路由。当参数是可选时,如果不提供参数,Vue会将其视为undefined

代码示例

javascript 复制代码
<template>
  <div>
    <h1>User Profile</h1>
    <p v-if="$route.params.id">User ID: {{ $route.params.id }}</p>
    <p v-else>User ID is not provided</p>
  </div>
</template>

<script>
export default {
  mounted() {
    // 获取传递过来的用户ID
    const userId = this.$route.params.id
    if (userId) {
      // 根据用户ID加载用户数据
      this.loadUserProfile(userId)
    } else {
      // 处理没有提供用户ID的情况
      console.log('User ID is not provided')
    }
  },
  methods: {
    loadUserProfile(userId) {
      // 发起API请求或执行其他操作,加载用户数据
      console.log(`Loading data for user ID: ${userId}`)
    }
  }
}
</script>

二、使用 query 传递参数

1. 基本路由格式

params不同,query参数是以键值对的形式附加到URL的查询字符串中的。在路由配置中,不需要定义参数占位符,而是直接在路由跳转时传递参数。

javascript 复制代码
const routes = [
  {
    path: '/user',
    component: UserProfile
  }
]

将参数直接作为查询参数传递:

javascript 复制代码
// 在代码中进行路由跳转并传递参数
this.$router.push({ path: '/user', query: { id: userId } })

代码示例

javascript 复制代码
<template>
  <div>
    <h1>User Profile</h1>
    <p>User ID: {{ $route.query.id }}</p>
  </div>
</template>

<script>
export default {
  mounted() {
    // 获取传递过来的用户ID
    const userId = this.$route.query.id
    if (userId) {
      // 根据用户ID加载用户数据
      this.loadUserProfile(userId)
    } else {
      // 处理没有提供用户ID的情况
      console.log('User ID is not provided')
    }
  },
  methods: {
    loadUserProfile(userId) {
      // 发起API请求或执行其他操作,加载用户数据
      console.log(`Loading data for user ID: ${userId}`)
    }
  }
}
</script>

总结

  • 使用 params 时,参数直接包含在路由的路径中,适用于对参数的格式和可见性有要求的情况。通过在路径中使用问号(?),还可以使某些参数变为可选。
  • 使用 query 时,参数作为查询字符串传递,适用于需要将参数保留在URL中的情况,或者需要传递多个参数的情况。
相关推荐
大家的林语冰几秒前
CSS 已死?DOM 性能黑洞!Pretext 排版革命让你在文本间跳舞,没有 DOM 也能纵享丝滑~
前端·javascript·css
vipbic10 分钟前
我也该升级了,陪伴了我7年的博客
前端
Lee川30 分钟前
RAG 实战:从一篇掘金文章出发,拆解检索增强生成的全链路
前端·人工智能·后端
Lee川43 分钟前
MCP 高德地图实战:当 AI 学会使用工具,一个协议如何重塑大模型的行动边界
前端·人工智能·后端
ZC跨境爬虫1 小时前
跟着 MDN 学CSS day_14:(尺寸调整技能测试与实战解析)
前端·css·ui·html·tensorflow
kyriewen1 小时前
用魔法打败魔法:我让AI替我去面试前端岗,AI面试官给我打了92分,还发了offer
前端·javascript·面试
IT_陈寒1 小时前
Redis批量删除踩了坑,原来DEL命令不是万能的
前端·人工智能·后端
lichenyang4531 小时前
鸿蒙聊天 Demo 练习 06:AI 思考气泡与 MVVM + Controller 结构重构
前端
Lkstar2 小时前
Vue keep-alive 原理全解:LRU 缓存策略、源码级理解
前端·vue.js·面试
会联营的陆逊2 小时前
html2canvas 1.4.1 在 iOS Safari 中生成图片卡住的问题排查与修复
前端