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

本文探讨在Vue项目中,如何在所有路由跳转时统一添加一个参数,并解决在使用router.beforeEach时参数无法生效的问题。通过在前置守卫中判断并手动触发路由跳转,确保参数正确传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求是什么

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

实现方式

先深入理解一下router的全局前置守卫
1160762-20181108144351467-369725503.png

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()方法,重新走了生命周期,你刚刚加的就没效果)。所以你在这个时候。 应该让她 不重新走生命周期,,打破常规。 重新调路由的方法,让他跳转传参数,就解决了

解决方法

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

1160762-20181108151128305-1586756823.png

转载于:https://www.cnblogs.com/lml-lml/p/9928953.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值