Vue路由组件传递参数

一、引言

在Vue应用程序中,路由组件是构建单页应用的关键部分。传递参数给路由组件可以让我们动态地展示内容,处理用户输入,以及实现各种交互功能。

二、路由参数

路由参数(Route Params):可以通过在路由路径中定义动态参数来传递数据。在路由配置中使用:来定义参数,然后在组件中通过this.$route.params来获取参数的值。

js 复制代码
// 路由配置
{
  path: '/user/:id',
  component: UserComponent
}

// 组件中获取参数
this.$route.params.id

三、查询参数

查询参数(Query Params):可以通过在URL中使用查询字符串的方式来传递参数。在组件中可以通过this.$route.query来获取查询参数的值。

js 复制代码
// 路由配置
{
  path: '/user',
  component: UserComponent
}

// URL:/user?id=123
// 组件中获取参数
this.$route.query.id

params和query传参的区别

  1. query在刷新页面的时候参数不会消失,params刷新页面的时候参数会消失。
  2. 使用name+query或者path+query传递路径参数,使用name+params传递路径参数。
  3. query参数显示在url地址栏当中,参数以键值对的形式追加在URL后,用?和&拼接参数,而params传参不会显示在地址栏。
  4. query传参适合传递可选的参数,常用于根据用户的选择或配置进行筛选、排序等操作。params传参适合传递必要的、对应特定资源的参数,常用于标识性的参数传递。

四、路由元信息

路由元信息(Route Meta):可以在路由配置中定义元信息来传递参数。在路由配置中使用meta字段来定义元信息,然后在组件中通过this.$route.meta来获取元信息的值。

js 复制代码
// 路由配置
{
  path: '/user',
  component: UserComponent,
  meta: {
    isAdmin: true
  }
}

// 组件中获取元信息
this.$route.meta.isAdmin

五、Props传参

Props传参:可以通过在路由配置中使用props字段来传递参数。可以将props设置为true,这样路由组件会自动将路由参数映射为组件的属性。也可以将props设置为一个函数,来自定义参数的映射方式。

js 复制代码
// 路由配置
const routes = [
  {
    path: '/user/:id',
    component: User,
    props: true
    //props: { id: '123' }
    //props: (route) => ({ id: route.params.id })
  }
]

// 路由组件
const User = {
  props: ['id'],
  template: '<div>User ID: {{ id }}</div>'
}

六、编程式导航传参

可以使用router.pushrouter.replace方法进行编程式导航,并通过paramsquery字段传递参数。

router.push方法用于导航到一个新的路由,并将其添加到浏览器的历史记录中。可以通过第二个参数传递参数。

js 复制代码
// 路由参数
router.push({path: '/user/123'})
// 获取参数
console.log(this.$route.params.id);

// 查询参数
router.push({path: '/user', query: { id: 123 } })
// 获取参数
console.log(this.$route.query.id);

当使用router.push方法进行路由跳转时,如果传递的路径中包含动态参数(例如/user/:id),则参数会被解析为路由的params属性。

router.replace方法也用于导航到一个新的路由,但是不会将新的路由添加到浏览器的历史记录中,而是替换当前的路由。同样可以通过第二个参数传递参数。

js 复制代码
router.replace({ path: '/user/123', params: { id: 123 } });

// 获取参数
this.$route.params.id

在上述示例中,使用path属性指定了目标路径为/user/123,并使用params属性传递了参数,其中id参数的值为123。

七、声明式导航传参

在Vue Router中,可以使用router-link组件进行声明式导航,并通过to属性传递参数。例如,要传递参数到目标路径/user/123,可以使用以下方式。

html 复制代码
<router-link :to="{ path: '/user/' + id }">User</router-link>

<router-link :to="{path:'/user', query:{id:123}}">User</router-link>

在上面的代码示例中,使用:to绑定了一个对象,其中path属性指定了目标路径为/user/123,params和query属性指定了要传递的参数对象,其中id参数的值为123。

js 复制代码
export default {
  created() {
    // 获取传递的参数
    const userId = this.$route.params.id;
    console.log(userId); // 123
    
    // const userId = this.$route.query.id;
    // console.log(userId); // 123
  }
};

我们用this.$route.params.idthis.$route.params.id获取到传递的参数id的值,即123。

八、最后的话

能力一般,水平有限,本文可能存在纰漏或错误,如有问题欢迎指正,感谢你阅读这篇文章,如果你觉得写得还行的话,不要忘记点赞、评论、收藏哦!祝生活愉快!

相关推荐
JUNAI_Strive_ving14 分钟前
番茄小说逆向爬取
javascript·python
看到请催我学习23 分钟前
如何实现两个标签页之间的通信
javascript·css·typescript·node.js·html5
twins352043 分钟前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky1 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
煸橙干儿~~1 小时前
分析JS Crash(进程崩溃)
java·前端·javascript
哪 吒1 小时前
华为OD机试 - 几何平均值最大子数(Python/JS/C/C++ 2024 E卷 200分)
javascript·python·华为od
安冬的码畜日常1 小时前
【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
前端·javascript·信息可视化·数据可视化·d3.js·d3比例尺·分段比例尺
杨荧2 小时前
【JAVA开源】基于Vue和SpringBoot的洗衣店订单管理系统
java·开发语言·vue.js·spring boot·spring cloud·开源
l1x1n02 小时前
No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史
前端·http·html
Q_w77422 小时前
一个真实可用的登录界面!
javascript·mysql·php·html5·网站登录