大体想法是给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 这很重要~~~
路由配置:
页面:
路由地址,采用query传参方式:?参数1=XXX&参数2=XXX
params参数
query参数
插播传送门=>>>Vue Router 的params和query传参的使用和区别(详尽)
$router返回的是当前项目中的路由器对象。
$route返回的是当前路由信息。
vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。
vue.config.js 是vue的配置文件,必须创建在demo根目录下,该配置文件中,只能使用commonjs模块化语法,使用module.export导出,格式如下。
@符号代表src资源目录,在vue.config.js文件中将路径解析,path.resolve是拼接路径方法。将@c定义为当前绝对路径
@c代表src目录下的components文件,@v代表src目录下的views文件,其他同理,后续在其他文件中引入文件时,只需要使用以下方法即可导入,不会随着文件目录的改变而改变。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)