vue router路由跳转带参数方法以及带参数后无法跳转的问题

在开发项目的过程中,经常会遇到某一个场景. eg:点击某个东西,会进入当前那个东西的详情页. 此时一般的处理方式就是需要获取到当前点击对象的id.跳转到新页面,根据这个id通过网络请求获取到详细的参数.

在vue中.假如我们创建了两个vue文件. 一个Aaa.vue,一个叫Bbb.vue文件.

在index.js文件中. 

import Videolist from '../pages/aaa/Aaa'
import Videodes from '../pages/bbb/Bbb'

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'Aaa',
      component: Aaa
    },
    {
      path: '/Aaa',
      name: 'Aaa',
      component: Aaa
    },
    {
      path: '/Bbb',
      name: 'Bbb',
      component: Bbb
    }

  ]
})

如果我们只需要跳转到对应的页面,不需要传参.那我们仅需

this.$router.push('./Aaa')

此时如果需要传参

this.$router.push(
  {
    name:'Table',
    params:{
      id:id,
      name:name
    }
  }
);
this.$router.push(
  {
    name:'Table',
    query:{
      id:id,
      name:name
    }
  }
);
如果使用params 地址栏为  eg:http://localhost:8080/Bbb;
如果使用query  地址栏为  eg:http://localhost:8080/Bbb?id=1&name=duccky1;

然后在对应的Bbb页面
如果使用params
mounted(res){
    var id = this.$route.params.id;
    var name = this.$route.params.name;
},
如果使用query
mounted(res){
    var id = this.$route.query.id;
    var name = this.$route.query.name;
},

这里需要注意的一个小坑:

在不传参时:

我们可以直接this.$router.push('./Bbb')或者this.$router.push('./bbb') 大小写不敏感

如果我们需要传参的时候

this.$router.push(
    {
        name:'Table',
        params:{
            id:id,
            name:name
        }
    }
);

这里的name必须和index.js注册的name名字完全相同.否则会无法跳转

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值