vue 跳转的几种方式,以及带参数跳转,动态路由配置

无参跳转

  1. 使用 <router-link to='地址'>
    这是利用a标签的原理
  2. 使用JS的方式来实现跳转
    方法:router .push(location, onComlete, onAbort?)
    例如: this.$router.push('/')
    每个实例上都带有一个router实力属性,我们通过该实例的方法push实现跳转

附: 因为用a标签的方法包裹起来要跳转的元素,会给元素加上a标签的样式,我们需要重新修改样式,有什么办法不用修改呢?
需要修改样式

 <router-link to='/forgotpage'><span style='margin-left: 40px; color: #93CEFA'>Forgot password?</span></router-link>

我们可以改为:

 <router-link to='/forgotpage'><span style='margin-left: 40px; color: #93CEFA'>Forgot password?</span></router-link>
命名路由,append 属性,查询参数,router-link渲染成<li>标签
<router-link tag="span" :to=''>
</router-link>

传参跳转
传参跳转的方式也有两种,还是router-link 和 JS 传递

JS控制跳转:
使用query:

this.$router.push({
  path: '/home',
  query: {
    site: [],
    bu: []
}
})

使用params:

this.$router.push({
  name: 'Home',  // 路由的名称
  params: {
    site: [],
    bu: []
}
})

params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params
query:/router1?id=123 ,/router1?id=456 ,这里的id叫做query。
两者都可以传递参数,区别是什么?

  1. query 传参配置的是path,而params传参配置的是name,在params中配置path无效
  2. query在路由配置不需要设置参数,而params必须设置
  3. query传递的参数会显示在地址栏中
  4. params传参刷新会无效,但是query会保存传递过来的值,刷新不变
    路由配置:

query 的写法

 {
path: '/home',
name: Home,
component: Home
}

params写法:

 {
path: '/home/:site/:bu',
name: Home,
component: Home
}

如果路由上面不写参数,也是可以传过去的,但不会在url上面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会丢失,那依赖这个参数的http请求或者其他操作就会失败。

获取路由参数
在接收的跳转的页面

created () {
let self = this
self.getParams()
},
watch : {
'$route': 'getParams'
},
methods: {
  getParams () {
  let site = this.$route.query.site
  let bu = this.$route.query.bu
  // 如果是params 传参,那就是this.$route.params.site
  上面就可以获取到传递的参数了
 }
}

注意:获取路由上面的参数,用的是$route,后面没有r
params是路由的一部分,必须要有。query是拼接在url后面的参数,没有也没关系。
params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。
params、query不设置也可以传参,但是params不设置的时候,刷新页面或者返回参数会丢失,query并不会出现这种情况,这一点的在上面说过了

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值