vue-router路由传参的三种方式

前言

我们在组件切换时经常会有传递一些数据的需求,这样就涉及到了路由传参的问题。

vue-router传递参数有两个大类:①编程式的导航 router.push。②声明式的导航 <router-link>

编程式导航router.push
通过params属性传值-name
//路由配置文件中
{
     path: '/detail',
     name: 'Detail',
     component: Detail
   }
//跳转时页面
this.$router.push({
  name: 'Detail',
  params: {
    name: '张三'id: 1,
  }
})
//跳转后页面获取参数对象
this.$route.params 

注:命名路由传递参数需要使用params来传递,这里一定要注意使用params不是query。目标 页面接收传递参数时使用params

通过query属性传值-path
//路由配置文件中
{
     path: '/detail',
     name: 'Detail',
     component: Detail
   }
//跳转时页面
this.$router.push({
  path: '/detail',
  query: {
    name: '张三'id: 1,
  }
})
 
//跳转后页面获取参数对象
this.$route.query 
通过动态路由方式
//路由配置文件中 配置动态路由
{
     path: '/detail/:id',
     name: 'Detail',
     component: Detail
   }
//跳转时页面
var id = 1;
this.$router.push('/detail/' + id)
 
//跳转后页面获取参数
this.$route.params.id
声明式的导航

声明式的导航和编程式的用法基本一样。

通过params属性传值-name
<router-link :to="{ name: 'news', params: { userId: 1111}}">click to news page</router-link>
通过query属性传值-path
<router-link :to="{ path: '/news', query: { userId: 1111}}">click to news page</router-link>
通过动态路由方式
 <router-link :to="'/user/'+userid" tag="button">用户</router-link>
$route和$router的区别
  • $router为VueRouter实例,想要导航到不同URL,则使用$router.push方法

- $route为当前router跳转对象里面可以获取name、path、query、params等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gTXbnmMQ-1617469705717)(vue-router传递参数的三种方式.assets/image-20210404010701605.png)]

小总结
  • 动态路由和query属性传值 页面刷新参数不会丢失, params会丢失
  • 动态路由一般用来传一个参数时居多(如详情页的id), query、params可以传递一个也可以传递多个参数 。
  • 获取参数通过$route对象$route.query$route.parmas
  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

°PJ想做前端攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值