vue-router模式和鉤子

  1. 配置路由模式(三種模式)
const router = new VueRouter({//創(chuàng)建路由實例
 mode: 'history',//模式
 routes
})

· 默認(rèn)hash: 使用URL hash值作為路由,支持所有瀏覽器
· history: 依賴HTML5 History API和服務(wù)器配置
· abstract:支持所有 JavaScript 運行環(huán)境,如 Node.js 服務(wù)器端。如果發(fā)現(xiàn)沒有瀏覽器的 API,路由會自動強(qiáng)制進(jìn)入這個模式。
默認(rèn)是hash,路由通過“#”隔開,但是如果工程中有錨鏈接或者路由中有hash值,原先的“#”就會對頁面跳轉(zhuǎn)產(chǎn)生影響;所以就需要使用history模式;
采用history模式有一個缺點就是會在當(dāng)前路由下刷新會找不到頁面(如下圖所示)


historyMode.png

需要在webpack.config.js中設(shè)置,這樣在當(dāng)前路由刷新就不會找不到頁面了。

 devServer: {
    historyApiFallback: true
}
  1. 路由導(dǎo)航鉤子
    2.1 全局鉤子
     const router = new VueRouter({ ... })
    

//導(dǎo)航開始時
router.beforeEach((to, from, next) => {
// to 目標(biāo)路由對象
// from 即將進(jìn)入的路由對象
//next Function必須調(diào)用
// next() 進(jìn)行下一個鉤子,知道全部鉤子執(zhí)行完
//next(false) 中斷當(dāng)前
//next('/') or next({path:'/'})
})
//導(dǎo)航結(jié)束時
router.afterEach((to, from) => {
//afterEach沒有next,不能改變導(dǎo)航
})
```
2.2 某個路由的鉤子

你可以在路由配置上直接定義 beforeEnter , afterEnter鉤子:

const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      },
     afterEnter: (to, from) => {
        // ...
      }
    }
  ]
})

2.3 組件內(nèi)鉤子
在組件內(nèi)直接定義以下鉤子
beforeRouteEnter
beforeRouteUpdate (2.2 新增)
beforeRouteLeave

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // 在渲染該組件的對應(yīng)路由被 confirm 前調(diào)用
    // 不!能!獲取組件實例 `this`
    // 因為當(dāng)鉤子執(zhí)行前,組件實例還沒被創(chuàng)建
  },
  beforeRouteUpdate (to, from, next) {
    // 在當(dāng)前路由改變,但是改組件被復(fù)用時調(diào)用
    // 舉例來說,對于一個帶有動態(tài)參數(shù)的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉(zhuǎn)的時候,
    // 由于會渲染同樣的 Foo 組件,因此組件實例會被復(fù)用。而這個鉤子就會在這個情況下被調(diào)用。
    // 可以訪問組件實例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 導(dǎo)航離開該組件的對應(yīng)路由時調(diào)用
    // 可以訪問組件實例 `this`
  }
}

beforeRouteEnter 鉤子 不能 訪問 this,因為鉤子在導(dǎo)航確認(rèn)前被調(diào)用,因此即將登場的新組件還沒被創(chuàng)建。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • vue2有著深度繼承的路由插件,即:vue-router,其中文的API地址。 vue-router與其他的路由(...
    白水螺絲閱讀 17,688評論 0 17
  • 路由 動態(tài)路由匹配 我們經(jīng)常需要把某種模式匹配到的所有路由,全部映射到同一個組件,例如我們有一個user組件用來展...
    羊烊羴閱讀 841評論 0 0
  • 本文首發(fā)于TalkingCoder,一個有逼格的程序員社區(qū)。轉(zhuǎn)載請注明出處和作者。 寫在前面 本文為系列文章,總共...
    Aresn閱讀 9,688評論 0 42
  • 一.安裝vue-router vue-router是一個插件包,所以我們還是需要用npm來進(jìn)行安裝的。打開命令行工...
    錢小強(qiáng)_閱讀 2,158評論 0 9
  • 在跟蜜蠟的相處模式里,有一種關(guān)系叫后知后覺,比方說: 蜜蠟是男的不是女的。 這個認(rèn)知是在它蛋蛋已經(jīng)長到無法被忽視的...
    張二更閱讀 415評論 2 1

友情鏈接更多精彩內(nèi)容