Vue中,如何实现在main.js实列化vue前,其他js配置文件中的vue-router也能生效

发布于 2022-09-11 18:18:08 字数 864 浏览 10 评论 0

比如我现在的vue-router是在main.js中配置的,代码如下

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

按顺序配置好了的,vue组件中使用没问题 this.$router

现在我要有个设置request 和 response 的拦截器,拦截器单独写在了一个叫request.js的文件下,部分代码如下

clipboard.png

问题来了,因为拦截器里有些地方需要跳转页面,可现在vue根本没有实例化完成,所以this.$router就会报错,我总不可能在这里再配置一次router吧,之前Iview也遇到类似的,但Iview直接import,不需要配置,这里需要在main.js中配置,所以就不晓得怎么搞了,请各位大佬帮个忙,给点办法,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

疧_╮線 2022-09-18 18:18:08

可以把 router 单独到一个文件中 export 出来,如果拦截器先加载完毕可以调整加载顺序或者直接在拦截器中使用 location.href

吾家有女初长成 2022-09-18 18:18:08

或者楼主也可以这样,在实例化 Vue 对象的时候,挂载到 window 对象下。然后引用的时候就可以用 window.vm.$router了。

// main.js
window.vm = new Vue({
    router
});

// 其他js文件引用的时候
window.vm.$router.push('login');
探春 2022-09-18 18:18:08

你可以把发请求的逻辑写在vue的生命周期中,这样肯定是每次请求都已经在vue实例化之后了

ら栖息 2022-09-18 18:18:08

将router部分代码改成

export const router = new VueRouter({
//省略
})

在你的request.js 中加入

import {router} from '@/main.js'

router.push({
//省略
})
鱼忆七猫命九 2022-09-18 18:18:08

你把router import进来试试

import router from './router'
...
router.push(...)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文