今天,算是真正认识了params传参,为什么说params传参引起了血案?
起因是这样的,我正在做一个登陆的模块,公司想根据url不同的参数来区分是什么类型的会议,
于是后端推荐我用params传参的方式来实现这一设计,于是我毫不犹豫的在longin的路由上加上了params参数:
path: "/:order",
name: "index",
component: () =>
import(/* webpackChunkName: "about" */ "./pages/index.vue"),
注意,我在path上加上了params参数
http://localhost:8090/bb
我这样访问了页面,这个bb是我随便写的参数,对应的是order
然后我在这一页跳到了另一个页面
http://localhost:8090/com2
该页面路由配置如下:
{
path:'/com2',
name:'com2',
component:()=>
import('./components/com1.vue')
},
然后我在这页面上随意的刷新了一下!!!!
结果跳到了刚才那个页面,也许很多大佬已经发现了问题所在,但是我却蒙了。。。
我一直把params当成了一种路由传参的方式,其实就是传参,但是它还有一个作用就是动态路由。。
this.$router.push({name:"com2"})
上面的方式虽然可以跳到一个新的页面,但是在我刷新的时候,注意url路径是这样的
http://localhost:8090/com2
我却回到了和http://localhost:8090/bb一样的页面,
原因是router将com2当成了/路径的params参数,所以回到了和http://localhost:8090/bb一样的页面,
大佬们称这种为动态路由,我却一下子没转过弯,整了半天。
哪种不能其它页面都不能刷新了吧,
于是我在默认路径上加上了第二个params参数
path: "/:order/:lang",
这样,我在http://localhost:8090/com2页面刷新时就不会跳到跟页面了,原因是,我想跳到跟页面必须是/aa/bb这样的格式,路由匹配不上跟页面,所以就避免了上述问题。