转到Vuejs 2的特定路线

jem*_*thi 5 javascript vue.js vue-router vue-component vuejs2

我是VueJS的新手,我正在使用VueJS 2 Webpack模板.如果登录成功,我试图从登录组件重定向到主组件,我尝试了很多东西,但我仍然遇到错误.这是我的路线:

const router = new VueRouter({
  mode: 'history',
  routes: [{
    'name': 'home',
    path: '/',
    component: require('./components/Home.vue'),
    beforeEnter: (to, from, next) => {
      if (!localStorage.getItem('user')) {
        next('/login')
      }
    }
  }, {
    'name': 'profile',
    path: '/profile',
    component: require('./components/Profile.vue'),
    beforeEnter: (to, from, next) => {
      if (!localStorage.getItem('user')) {
        next('/login')
      }
    }
  }, {
    'name': 'login',
    path: '/login',
    component: require('./components/Login.vue')
  }, {
    'name': 'new',
    path: '/new',
    component: require('./components/New.vue'),
    beforeEnter: (to, from, next) => {
      if (!localStorage.getItem('user')) {
        next('/login')
      }
    }
  }, {
    'name': 'signup',
    path: '/signup',
    component: require('./components/Signup.vue')
  }, {
    'name': 'logout',
    path: '/logout',
    beforeEnter: (to, from, next) => {
      localStorage.removeItem('user')
      next('/login')
    }
  }, {
    'name': 'article',
    path: '/article/:id',
    component: require('./components/Article.vue'),
    beforeEnter: (to, from, next) => {
      if (!localStorage.getItem('user')) {
        next('/login')
      }
    }
  }]
})
Run Code Online (Sandbox Code Playgroud)

这就是我试图重定向到home组件的内容:

this.$router.replace(this.$router.go('/'))
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

Uncaught (in promise) TypeError: Cannot read property 'name' of undefined(…)
Run Code Online (Sandbox Code Playgroud)

Bil*_*ell 9

this.$router.replace() 期待一个位置.

this.$router.go('/')浏览浏览器历史记录,因此不应该返回任何内容.它基本上就像window.history.go(Number).

this.$router.replace('/')如果您想要替换您所在的页面,您可能想要这样做.

也.我会查看这部分文档.你可以把很多重复的代码放在一个beforeEach.

https://router.vuejs.org/en/advanced/meta.html