outer.beforeEach()通常用來作一些進入頁面的限制。vue
好比沒有登陸,vuex
就不能進入某些頁面,只有登陸了以後纔有權限查看某些頁面。。。說白了就是路由攔截。
第一步 規定進入路由需不須要權限ui
@/router/index.js import A from '@/components/a' { path: '/a', name: 'a', component: A, meta : { //加一個自定義obj requireAuth:true //這個參數 true 表明須要登陸才能進入A } },
第二步 使用vuex整一個userIdspa
@/assets/store.js //使用vuex三步走 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) //這個理論來講 const store = new Vuex.Store({ state:{ userId : '' } }) export default store
第三步 使用router.beforeEach()code
import store from '@/assets/store' //把這個userId獲取過來 router.beforeEach((to,from,next)=>{ if(to.meta.requireAuth){ if(store.state.userId){ next() }else{ next({path:'/b'}) } }else{ next() } })
第四步
第三步這個/b路由其實就是登錄頁面,
當進入A頁面以前,須要請求接口,獲取一下是否有登錄過,而後把這個userId存在vuex的state裏。
當沒有userId時,則在登錄以後,存一個userId到state裏。而後就敲完收工component
全局鉤子做用於全部路由,
裏面的參數
<code>to</code>表示即將要進入的路由對象,
<code>from</code>表示即將要離開的路由對象,
<code>next</code>是繼續跳轉或中斷的方法。 咱們來看一下打印出的對象