vue-router 在每个路由进入前添加参数

vue-router 在每个路由进入前添加参数,第1张

       在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

  }

..... // 别的 *** 作

})

项目中很多情况下都需要进行路由之间的传值,想过很多种方式

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文件,其他同理,后续在其他文件中引入文件时,只需要使用以下方法即可导入,不会随着文件目录的改变而改变。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11792988.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存