Vue路由组件传递参数的六种场景

 更新时间:2023年09月08日 09:01:42   作者:牛哥说我不优雅  
在Vue应用程序中,路由组件是构建单页应用的关键部分,传递参数给路由组件可以让我们动态地展示内容,处理用户输入,以及实现各种交互功能,本文就给大家介绍了六种Vue路由组件传递参数场景,需要的朋友可以参考下

一、引言

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

二、路由参数

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

// 路由配置
{
  path: '/user/:id',
  component: UserComponent
}
// 组件中获取参数
this.$route.params.id

三、查询参数

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

// 路由配置
{
  path: '/user',
  component: UserComponent
}
// URL:/user?id=123
// 组件中获取参数
this.$route.query.id

params和query传参的区别

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

四、路由元信息

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

// 路由配置
{
  path: '/user',
  component: UserComponent,
  meta: {
    isAdmin: true
  }
}
// 组件中获取元信息
this.$route.meta.isAdmin

五、Props传参

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

// 路由配置
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方法用于导航到一个新的路由,并将其添加到浏览器的历史记录中。可以通过第二个参数传递参数。

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

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,可以使用以下方式。

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

第一个router-link组件的to属性使用了动态的路径参数,这意味着在渲染时,id是一个变量,它的值将会动态地替换到路径中。例如,如果id的值是123,那么生成的链接将是/user/123。这种方式使用了params参数来传递参数给目标路由组件。

第二个router-link组件的to属性使用了查询参数,这意味着在生成的链接中,会在URL后面添加查询字符串,例如/user?id=123。这种方式使用了query参数来传递参数给目标路由组件。

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。

八、最后的话

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

以上就是Vue路由组件传递参数的六种场景的详细内容,更多关于Vue路由组件传递参数的资料请关注脚本之家其它相关文章!

相关文章

  • vue 授权获取微信openId操作

    vue 授权获取微信openId操作

    这篇文章主要介绍了vue 授权获取微信openId操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue指令做滚动加载和监听等

    vue指令做滚动加载和监听等

    这篇文章主要介绍了vue指令做滚动加载和监听等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Vue简介、引入、命令式与声明式编程详解

    Vue简介、引入、命令式与声明式编程详解

    原生开发和Vue开发的模式和特点,我们会发现是完全不同的,这里其实涉及到两种不同的编程范式:命令式编程和声明式编程,下面这篇文章主要给大家介绍了关于Vue简介、引入、命令式与声明式编程的相关资料,需要的朋友可以参考下
    2022-10-10
  • vue项目打包后,由于html被缓存导致出现白屏的处理方案

    vue项目打包后,由于html被缓存导致出现白屏的处理方案

    这篇文章主要介绍了vue项目打包后,由于html被缓存导致出现白屏的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 示例详解Vue中控制组件的挂载位置

    示例详解Vue中控制组件的挂载位置

    在 Vue 中,append-to-body=“true” 主要用于一些第三方组件(如 Element UI 或 Ant Design Vue 中的弹出框、下拉菜单等)来控制组件的挂载位置,本文介绍Vue中控制组件的挂载位置,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • 详解vue+axios给开发环境和生产环境配置不同的接口地址

    详解vue+axios给开发环境和生产环境配置不同的接口地址

    这篇文章主要介绍了详解vue+axios给开发环境和生产环境配置不同的接口地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • vue中使用loadsh的debounce防抖函数问题

    vue中使用loadsh的debounce防抖函数问题

    这篇文章主要介绍了vue中使用loadsh的debounce防抖函数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • vue 首页加载,速度优化及解决首页白屏的问题

    vue 首页加载,速度优化及解决首页白屏的问题

    这篇文章主要介绍了vue 首页加载,速度优化及解决首页白屏的问题,具有很好的参考价值,希望对大家有所帮助。
    2022-10-10
  • Vue滚动到指定位置的多种方式示例详解

    Vue滚动到指定位置的多种方式示例详解

    当容器有滚动条时,有时需要将指定的内容自动滚动到可视区域,怎么实现呢,下面小编给大家带来了多种方法实现Vue滚动到指定位置,感兴趣的朋友跟随小编一起看看吧
    2023-08-08
  • 解读计算属性和watch监听的区别及说明

    解读计算属性和watch监听的区别及说明

    计算属性是基于它们的依赖进行缓存的,只有在它的相关依赖发生改变时才会重新求值,而watch则是一个更为通用的监听器,它可以在数据变化时执行异步操作或开销较大的操作
    2025-01-01

最新评论