【前端】Vue路由传参的三种方式
路由传参的三种方式
params传参
BUG:这种方式会造成页面刷新参数丢失。
参数传递页面
1 | // 点击跳转详情页面 |
路由规则代码
1 | { |
参数获取和使用
子组件获取通过路由传递过来的参数,这样获取到的参数,相当于data中的数据,参照data数据的使用即可:
1 | props:['menu'], |
注意:通过props接受传递的参数前提是在配置路由规则时开启了props传参,为true即为开启,默认false。如果不开启props传参,可以通过下面的方式获取
1 | menu:this.$route.params.menu //写在data函数中即可 |
注意:如果push函数的参数是一个对象形式的话,对象当中如果配置了path属性,那么是不能再配置params属性的,具体可看官方文档说明
路由属性配置传参
参数传递页面代码
1 | toDetail(){ |
路由配置规则
1 | { |
这里我用的是ES6的模板字符串方式,可以直接读取参数,也可以使用普通字符串拼接的方式。
参数的接收(此种方式不支持props传参)
1 | id:this.$route.params.id |
query传参
这种方式页面在刷新时不丢失参数。
参数传递页面
1 | this.$router.push({ |
路由规则配置页面:
1 | { |
参数获取(此种方式不支持props传参)
1 | id:this.$route.query.id |
路由属性 与 query传递方式的区别
区别一
首先就是地址栏的区别,第一种方式参数传递的参数不会在地址栏出现,同时支持两种参数接受方式,但是后两种参数会出现在地址栏中,仅支持使用挂载在vue实例身上的route对象来获取参数。
区别二
再者就是参数的丢失问题,第一种传参方式在页面刷新之后,参数会丢失,但是后两种方式不存在页面刷新参数丢失的情况。
评论