Vue3基础(21)___在axios.js中使用路由跳转

简介: 本文介绍了在Vue 3中如何在axios.js中使用路由跳转,通过直接引入路由实例并使用`router.push`实现页面跳转。

vue2中我们只需要引入main.js即可获取this实例,直接

this.$router.push('/login')

首先在vue3中我们使用comAPI,但是在自己封装的js里面,我们不能使用useRouter ,useRoute,他们需要在setup中调用执行后才能用,于是给出解决办法:
直接使用router实例:

    import axios from 'axios'
    import { ElMessage } from "element-plus";
    import router from '../../router'
    let Ajax = axios.create({
        baseURL: "http://127.0.0.1:3003/",
        timeout: 5000
    })
    Ajax.interceptors.response.use(response => {
        if (response.data.data.code == 2) {
            ElMessage(response.data.data.data)
            router.push('/login')
            localStorage.removeItem('username')
            return []
        }
        return response.data;
    }, error => {
        return Promise.reject(error);
    });

    const get = (url, params) => {
        Ajax.defaults.headers['token'] = localStorage.getItem('token')
        return new Promise((relove, reject) => {
            Ajax.get(url, { params }).then(res => relove(res)).catch(err => reject(err))
        })
    }
    const post = (url, params) => {
        Ajax.defaults.headers['token'] = localStorage.getItem('token')
        return new Promise((relove, reject) => {
            Ajax.post(url, params).then(res => relove(res)).catch(err => reject(err))
        })
    }
    export default {
        get, post
    }

核心:

import router from '../../router'
router.push('/login')

router文件下的index.js文件就是我们的路由实例。
我们的路由文件:

import { createRouter, createWebHashHistory } from 'vue-router'

const router = createRouter({
    history: createWebHashHistory(),
    routes: [
        //主页面
        {
            path: "/home",
            component: () => import('../views/home.vue'),
            redirect: '/home/userlist',
            children: [
                {
                    path: 'userlist',
                    component: () => import('../components/userlist.vue')
                },
                {
                    path: 'userinfo',
                    component: () => import('../components/userinfo.vue')
                },
            ]
        },
        //登录页面
        {
            path: "/login",
            component: () => import('../views/login.vue')
        },
        //直接报错
        // {
        //     path: "*",
        //     redirect: "/login"
        // },
        //正确写法:
        //1
        // {
        //     path: "/:catchAll(.*)",
        //     redirect: "/login"
        // },
        //2
        // {
        //     path: "/:pathMatch(.*)*",
        //     redirect: "/login"
        // },
        //3
        {
            path: "/:pathMatch(.*)",
            redirect: "/login"
        },


    ],
})
export default router
目录
相关文章
|
10月前
|
JavaScript 数据可视化 前端开发
【Vue.js】vue-cli搭建SPA项目并实现路由与嵌套路由---详细讲解
【Vue.js】vue-cli搭建SPA项目并实现路由与嵌套路由---详细讲解
93 0
|
25天前
|
JavaScript 前端开发 UED
揭秘Vue.js高效开发:Vue Router如何让单页面应用路由管理变得如此简单?
【8月更文挑战第30天】随着Web应用复杂性的增加,单页面应用(SPA)因出色的用户体验和高效的页面加载性能而备受青睐。Vue.js凭借简洁的语法和灵活的组件系统成为构建SPA的热门选择,其官方路由管理器Vue Router则简化了路由管理。本文通过实战示例介绍如何利用Vue Router实现高效的SPA路由管理,包括命名路由、动态路由及其核心优势。
13 0
|
2月前
|
JavaScript
学习和分享关于 Vue.js 的路由(vue-router)
学习和分享关于 Vue.js 的路由(vue-router)
31 2
|
3月前
|
JavaScript 前端开发
Vue.js中使用JavaScript实现路由跳转详解
Vue.js中使用JavaScript实现路由跳转详解
|
3月前
|
JSON JavaScript API
Vue2和Vue3axios的如何使用,Vue3全局配置axios,axios全局配置
Vue2和Vue3axios的如何使用,Vue3全局配置axios,axios全局配置
|
4月前
|
监控 JavaScript
vue.js路由
vue.js路由
47 0
vue.js路由
|
4月前
|
JavaScript Go 网络架构
除了 Vue.js,还有哪些框架支持获取路由参数?
除了 Vue.js,还有哪些框架支持获取路由参数?
25 3
|
4月前
|
JavaScript 数据安全/隐私保护 开发者
解决vue引发的报错-sub is not a function at vuex.esm.js:422:1跳转不了路由的问题
解决vue引发的报错-sub is not a function at vuex.esm.js:422:1跳转不了路由的问题
154 0
|
JavaScript 前端开发
Vue3引入vue-router路由并通过vue-wechat-title设置页面
对于用类似Vue前后端分离技术架构的单页应用页面之间的跳转没有非前后端分离那么来得直接,甚至连设置跳转页面的Title都要费一番周折,本文介绍Vue3引入vue-router路由并设置页面Title,通过vue-router实现页面的路由,通过vue-wechat-title来设置页面的title。
291 0
|
Web App开发 存储 缓存
原生 js 实现一个前端路由 router
原生 js 实现一个前端路由 router
910 0
原生 js 实现一个前端路由 router