2016-12-15 81 views
2

的具體路線我是新的VueJS,我使用的VueJS 2 Webpack模板。 我試圖從登錄組件重定向到家庭組件,如果登錄成功,我嘗試了很多東西,但我仍然收到錯誤。 這裏是我的路由:查看在Vuejs 2

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') 
     } 
    } 
    }] 
}) 

而這正是我試圖重定向到家裏組件:

this.$router.replace(this.$router.go('/')) 

而且我得到了這個錯誤:

Uncaught (in promise) TypeError: Cannot read property 'name' of undefined(…) 

回答

6

this.$router.replace()期望的位置。

this.$router.go('/')遍歷瀏覽器歷史記錄,因此它不應該返回任何內容。它基本上就像window.history.go(Number)

如果您想要替換您所在的頁面,您可能需要執行this.$router.replace('/')

另外。我會看看這部分的文檔。您可以在beforeEach中放置大量重複代碼。

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

+0

現在工作正常!非常感謝你。 – jemlifathi

+0

完全沒問題! –

+0

太棒了!像魅力一樣工作。 – victorkurauchi