需求是什么

所有的路由跳转加一个统一的参数

实现方式

先深入理解一下router的全局前置守卫

router.beforeEach((to, from, next) => {
const queryData = to.query
if(from.path!='/'){// 刷新和首次进来的时候from.path都没有值
if(from.query.chCode!=to.query.chCode){
to.query.chCode = from.query.chCode
router.push({path:to.path,query:to.query})
return
}
}
// token存在
if (vuex.getters.getAccessToken) { // 这个if判断的动作是我自己的业务逻辑
const param= cloneDeep(queryData)
if (queryData.code) {
delete param.code
delete param.state
next({query:param})
} else {
next()
}
// code存在
}else if (queryData.code) {
const param= cloneDeep(queryData)
delete param.code
delete param.state
let appIds
if(localStorage.getItem('temp')!=='wx'){
appIds='ww4426bfa09f4b044b'
}else{
appIds='wx34284214d7a79ba1'
}
const params={
appId: appIds,
code: queryData.code
}
http(urls.jointLogin, params).then(res => {
vuex.dispatch('setAccessToken', res.data.accessToken)
next({path:to.path, query:param})
}).catch(err => {
next({path:'/500',query:param})
}) } else {
next()
}

遇到什么问题

因为。beforeeach的这个函数。 其实在路由进页面之前就定好了。 你现在改也无济于事。 已经是马后炮了 这个next函数,,这里面又分为四种情况。如上面的图,仔细品味一下,什么值都不传的时候,它是相当于又走了一个完整的生命周期,并不是说接着你之前的走,,,我刚开始的做法是 在beforeEach的to和from里,能获取到带的参数,在这个时候我也能加参数,但是你在这个时候不管加多少参数,页面路由跳转的时候url都收不带这个参数的(因为它走的是next()方法,重新走了生命周期,你刚刚加的就没效果)。所以你在这个时候。 应该让她 不重新走生命周期,,打破常规。 重新调路由的方法,让他跳转传参数,就解决了

解决方法



跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

vue 所有的路由跳转加一个统一参数的更多相关文章

  1. 解决vue单页路由跳转后scrollTop的问题

    作为vue的初级使用者,在开发过程中遇到的坑太多了.在看页面的时候发现了页面滚动的问题,当一个页面滚动了,点击页面上的路由调到下一个页面时,跳转后的页面也是滚动的,滚动条并不是在页面的顶部 在我们写路 ...

  2. Vue编程式路由跳转传递参数

    Vue 有时在路由跳转时需要用到一些原页面里的数据,用以下方法: 1.在跳转页的方法里写下query参数 TableChange(scope){ this.$router.push({ path:'d ...

  3. 「实践篇」解决微前端 single-spa 项目中 Vue 和 React 路由跳转问题

    前言 本文介绍的是在做微前端 single-spa 项目过程中,遇到的 Vue 子应用和 React 子应用互相跳转路由时遇到的问题. 项目情况:single-spa 项目,基座用的是 React,目 ...

  4. vue如何在路由跳转的时候更新组件

    项目中在路由跳转的时候碰到一个问题,没有更新视图,如何解决呢: https://segmentfault.com/a/1190000008879966 http://www.tuicool.com/a ...

  5. vue中通过路由跳转的三种方式

    原文:https://blog.csdn.net/qq_40072782/article/details/82533477 router-view 实现路由内容的地方,引入组件时写到需要引入的地方需要 ...

  6. Vue在v-for中给css传递一个数组参数

    需求就是将很多个数据,以进度条的形式展示在页面上,形成一个可视化. 接下来是html代码 <!DOCTYPE html> <html> <head> <tit ...

  7. vue:在路由跳转中使用拦截器

    1:首先在路由对象中的某一个具体的路由对象加这样一个属性 meta: {  requireAuth:true  } 2:然后在main.js中添加这段代码 router.beforeEach((to, ...

  8. vue+webpack2实现路由的懒加载

    当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的异步组 ...

  9. vue项目实现路由按需加载的3种方式

    vue异步组件技术 ==== 异步加载vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 .但是,这种情况下一个组件生成一个js文件 /* vue异步组件技术 */ { ...

随机推荐

  1. The Vertica Analytic Database:C-Store 7 Years Later笔记

    1.设计目标 Vertica数据库可以说是7年之后的C-Store,在2012年发表的这样一篇论文,描述了现在基于C-Store的一部分改进,当然,Vertica借鉴了很多C-Store的思想,但并非 ...

  2. 实现简单的List功能

    简单的实现javaArrayList(可扩容)功能,实现新增,删除,取数据. package algorithm.data_structure; /** * 模拟ArrayList类的功能 * @au ...

  3. Event-driven programming-main loop

    In computer programming, event-driven programming is a programming paradigm in which the flow of the ...

  4. Debian下签名无法验证

    又收集到的新方法 gpg --keyserver  subkeys.pgp.net --recv-keys AED4B06F473041FA  && apt-key add /root ...

  5. Codeforces Round #506 (Div. 3) A-C

    CF比赛题解(简单题) 简单题是指自己在比赛期间做出来了 A. Many Equal Substrings 题意 给个字符串t,构造一个字符串s,使得s中t出现k次;s的长度最短 如t="c ...

  6. vue定义对象变量并合并成新的对象

    背景: 一般情况下,向后台发送数据请求会存在公共的变量,为了避免每一个相同部分的变量都重新定义,则想出以下解决方案: 例如一下:function,version,Authorization是公共请求部 ...

  7. URL中一些特殊符号的替代符

    下表中列出了一些URL特殊符号及编码 十六进制值 1.+ URL 中+号表示空格 %2B 2.空格 URL中的空格可以用+号或者编码 %20 3./ 分隔目录和子目录 %2F 4.? 分隔实际的 UR ...

  8. 《你又怎么了我错了行了吧》第九次团队作业:Beta冲刺与验收准备

    项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十三 团队作业9 团队名称 你又怎么了我错了行了吧 作业学习目标 (1)掌握软件黑盒测试技术: (2)学会编制软件项目总结PPT. ...

  9. Python3 定时访问网页

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50358695 如果我有一组网站,想要定 ...

  10. jquery-通过下拉菜单更改input日期

    通过下拉菜单的选项,将文本框中的日期更改为当前日期的90天后 技巧: d.getMonth()是从0开始计算的,所以要加上1,d.getFullYear()才能取到当前的年份 $("#acc ...