在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ beforeEnter調(diào)用 next 無作用問題 vue-router

beforeEnter調(diào)用 next 無作用問題 vue-router

直接上代碼

{
??????path: '/logout',
??????name: 'Logout',
??????beforeEnter: (to, from, next) => {
????????console.log('work') // 生效
????????next(vm => {
??????????vm.$store.dispatch('logout') // 跑不進去
????????})
??????}
????},

不知道是不是小弟調(diào)用錯誤, 在beforeEnter 中的next 插了debug或console.log 動作都無法生效, 看樣子是進程根本沒跑進next中,
目前是想要只要router連到/logout這個path就會進行登出($store.dispatch('logout'))
想請問哥們有沒有什么看法,
或踩過這個坑的大大能給點指教

跪了

回答
編輯回答
糖豆豆

完整的導航解析流程

導航被觸發(fā)。
在失活的組件里調(diào)用離開守衛(wèi)。
調(diào)用全局的 beforeEach 守衛(wèi)。
在重用的組件里調(diào)用 beforeRouteUpdate 守衛(wèi) (2.2+)。
在路由配置里調(diào)用 beforeEnter。
解析異步路由組件。
在被激活的組件里調(diào)用 beforeRouteEnter。
調(diào)用全局的 beforeResolve 守衛(wèi) (2.5+)。
導航被確認。
調(diào)用全局的 afterEach 鉤子。
觸發(fā) DOM 更新。
用創(chuàng)建好的實例調(diào)用 beforeRouteEnter 守衛(wèi)中傳給 next 的回調(diào)函數(shù)。

在路由配置里的beforeEnter,路由組件還沒被激活,next 里面是獲取不到 vm
你可以在Logout這個組件的beforeRouteEnter里面next(vm => {})

2017年9月7日 23:07
編輯回答
款爺

next里的參數(shù)只能是false,string,void,Location對象
其實你可以寫在外面啊,實在想寫到next里面的話可以寫個IIEF

next(
  (() => {
    console.log(xxx)
    return
    // 不跳轉(zhuǎn)的話就寫 return false
  })()
)

而且我覺得你在這拿不到vm
或者你可以在router.js里從main.js中引入根組件

import rootVm from '@/main.js'
然后寫rootVm.$store.dispatch('logout')
2018年8月1日 22:10
編輯回答
瘋子范

在路由前置守衛(wèi)中是拿不到進入的頁面實例的,因為目標組件還沒有被激活,
通常會這樣處理:在目標組件頁面:

beforeRouteEnter (to, from, next) {
  next(vm => {
    // 通過 `vm` 訪問組件實例
  })
}

參照vue-router導航守衛(wèi)

2017年3月14日 23:48