
大体想法是给meta里边一个标志来表示是否已经添加了想添加的字段,那就叫youKnowWho吧,首先设置to.meta.youKnowWho = false,在beforeEach开始时判断youKnowWho,为false时进行 *** 作,废话少说,上酸菜
router.beforeEach((to, from, next) =>{
if (!to.meta.youKnowWho ) { // 说明没有进行 *** 作
to.meta.youKnowWho= true // 一定要写,不然烫烫烫到怀疑人生
let newTo = { ...to } // 不要直接to.query = 什么鬼,先克隆出来
newTo.query.something= something // 做自己想做的事,这里只以query为例
next(newTo) // 重新跳转路由,这时候想干的事已经干完了,并且不会再进到这个if语句
return
}
..... // 别的 *** 作
})
项目中很多情况下都需要进行路由之间的传值,想过很多种方式
sessionstorage/localstorage/cookie 进行离线缓存存储也可以,用vuex也可以,不过有些大材小用吧,不管怎么说因场景而异
下面我来说下vue自带的路由传参的三种基本方式
先有如下场景 点击当前页的某个按钮跳转到另外一个页面去,并将某个值带过去
第一种方法 页面刷新数据不会丢失
需要对应路由配置如下:
可以看出需要在path中添加/:id来对应 $router.push 中path携带的参数。在子组件中可以使用来获取传递的参数值
另外页面获取参数如下
第二种方法 页面刷新数据会丢失
通过路由属性中的name来确定匹配的路由,通过params来传递参数。
对应路由配置: 注意这里不能使用:/id来传递参数了,因为组件中,已经使用params来携带参数了。
子组件中: 这样来获取参数
第三种方法
使用path来匹配路由,然后通过query来传递参数
这种情况下 query传递的参数会显示在url后面?id=?
对应路由配置:
对应子组件: 这样来获取参数
特别注意哦,
组件中 获取参数的时候是 router 这很重要~~~
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)