vue 登录拦截 成功后返回之前页面 不跳转问题 求助

我这样写 跳转没反应 url 也不变化 但是 我直接this.$route.push('/') 是可以跳转的 请问是那里问题

我的路由写法

import Vue from 'vue'

import VueRouter from 'vue-router'

import Home from '../views/Home.vue'

import NProgress from 'nprogress'

import User from '../views/Public/index'

import store from '@/store'

import 'nprogress/nprogress.css'

// 解决Vue-Router升级导致的Uncaught(in promise) navigation guard问题

const originalPush = VueRouter.prototype.push

VueRouter.prototype.push = function push (location, onResolve, onReject) {

if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)

return originalPush.call(this, location).catch(err => err)

}

Vue.use(VueRouter)

const routes = [

{

path: '/',

name: 'Home',

component: Home,

redirect: '/find',

children: [

{

path: '/find',

name: 'Find',

meta: {

keepAlive: true

},

component: () => import(/* webpackChunkName: "about" */ '../views/Find')

},

{

path: '/broadcasting',

name: 'Broadcasting',

component: () =>

import(/* webpackChunkName: "about" */ '../views/Broadcasting')

},

{

path: '/dynamic',

name: 'Dynamic',

component: () =>

import(/* webpackChunkName: "about" */ '../views/Dynamic')

},

{

path: 'personage',

name: 'Personage',

meta: {

requireAuth: true

},

component: () =>

import(/* webpackChunkName: "about" */ '../views/Personage')

}

]

},

{

path: '/user',

component: User,

redirect: '/login',

children: [

{

path: '/login',

name: 'Login',

component: () =>

import(/* webpackChunkName: "user" */ '../views/Public/login')

},

{

path: '/register',

name: 'Register',

component: () =>

import(/* webpackChunkName: "user" */ '../views/Public/registe')

}

]

}

]

const router = new VueRouter({

mode: 'history',

base: process.env.BASE_URL,

routes

})

// 全局路由守卫

router.beforeEach((to, from, next) => {

// to: Route: 即将要进入的目标 路由对象

// from: Route: 当前导航正要离开的路由

// next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

const nextRoute = [

'Personage',

'Dynamic'

]

const isLogin = store.getters.isLogin

// 未登录状态;当路由到nextRoute指定页时,跳转至login

if (nextRoute.indexOf(to.name) >= 0 && !isLogin) {

next({

path: '/login',

// 将跳转的路由path作为参数,登录成功后跳转到该路由

query: { redirect: to.fullPath }

})

} else {

next()

}

// 已登录状态;当路由到login时,跳转至home

if (to.name === 'Login') {

if (isLogin) {

console.log('已登录')

router.push({ path: '/find' })

}

}

})

router.afterEach(() => {

NProgress.done()

})

export default router

登录页面写法

    submit () {

switch (this.key) {

case 0:

if (paramsValidate(this.user)) {

const { phone, password } = this.user

_cellphone({ phone: phone, md5_password: md5(password) }).then(res => {

console.log(res)

this.$router.push(this.$router.currentRoute.query.redirect || '/')

})

}

break

case 1:

break

case 2:

break

}

},

回答

image.png
应该是跳了,还是走了这里,debugger看看

children的path没有'/'

personage的path没设置对,fullpath得到的(如:/login),你漏了

image.png

以上是 vue 登录拦截 成功后返回之前页面 不跳转问题 求助 的全部内容, 来源链接: utcz.com/a/42475.html

回到顶部