在vue-router的钩子函数beforeEach函数中有三个参数to,from,next,因为不能直接操作to.query,所以直接修改query的做法gg,但是to.meta是可以随意旋转跳跃的,嗯~灵感来了。
大体想法是给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
}
..... // 别的操作
})
网友评论