vue----webpack模板----局部路由守衛


 路由守衛分類:
1.局部路由守衛

2.全局路由守衛

局部路由守衛

只適合在當前路由使用,是局部的路由守衛
 
當前路由進入,更新,離開時要做的事情
 路由進入:
一個頁面進入另一個頁面, 是否登陸,
查看個人信息   是否登錄
用途:
  1.驗證用戶是否登錄
  2.支付前,判斷余額是否足夠
  3.熱力圖
  4.更新信息
登錄
----->進入,未登錄------>登錄頁面 路由更新: 當路由發生改變的時候,,,當組件被復用的時候 路由離開: 未完成答題,離開頁面,盡行確認,是------->離開,否--------->不離開
  用途:
  1.當用戶沒有支付時,提醒用戶是否確定離開
  2.答題系統,提交時
  3.退出系統時
  4.信息未保存時
 
路由進入:(在需要進入的組件中調用)
beforeRouteEnter (to, from, next) {
// 在渲染該組件的對應路由被 confirm 前調用
// 不!能!獲取組件實例 `this`
// 因為當守衛執行前,組件實例還沒被創建
 next((vm)=>{
//vm就是vue的實例,相當於this
})
},
 
更新:(在復用的組件調用)
beforeRouteUpdate (to, from, next) {
// 在當前路由改變,該組件被復用時調用
// 可以訪問組件實例 `this`
},
離開:(在離開的組件調用)
beforeRouteLeave (to, from, next) {
// 導航離開該組件的對應路由時調用
// 可以訪問組件實例 `this`
}

 

案例1:beforeRouteUpdate

/*
    從a到b,,to為:b的路由信息
            from:a的路由信息
            next   b的路由信息
 
    問題:有一個是無法點擊的
    */
    beforeRouteUpdate(to,from,next){
        // console.log(to);
        // console.log(next);
        this.name = to.params.name;
        this.price = to.params.price;
        //next根據to的path/name進行路由的跳轉,如果不寫next,當前路由不會執行
        //當前在a路由,再次點擊a路由,不會發生跳轉,因為沒有讓自己跳轉,必須要用next
 next();
    },

案例2:beforeRouteLeave

/*
    從a到b    進行判斷,符合條件進行跳轉,不符合條件,不能跳轉
    */
    beforeRouteLeave(to,from,next){
        // console.log(to);
        // console.log(this);
       var flag = confirm("請確認個人信息");//返回布爾值,確定為true,取消為false
        if(flag){
            next()//根據to的path/name進行跳轉
        }else{
            this.$router.push("/find");
        }
 
    },

案例3:beforeRouteEnter

 //eg:商品列表頁必須要登錄才能進入,如果未登錄,就跳轉到登錄頁
beforeRouteEnter(to,from,next){ //訪問不到this // console.log(this); // console.log(to); var status = false; next((vm)=>{ console.log(vm);//小型的vue實例 var flag = false; if(flag){ next();//執行to的path/name }else{ vm.$router.push("/login") } }) } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM