beforeRouterEnter與replace的使用


這次使用beforeRouterEnter來判斷是一定條件下才執行相應的頁面跳轉。

beforeRouterEnter:組件內路由,跟data,methods同級

 beforeRouteEnter (to, from, next) { // 在渲染該組件的對應路由被 confirm 前調用 // 不!能!獲取組件實例 `this` // 因為當守衛執行前,組件實例還沒被創建 },

需求場景:
  一個stuInfo頁面,只有第一次才會出現,一旦出現過,以后再也不會出現,即使是輸入該頁面的url也不會跳轉到該頁面,只會跳轉到指定的其他頁面;

代碼如下:
beforeRouteEnter (to, from, next) {
      next(vm=>{
        if(vm.profileCompleted){
          vm.nextReplace()
        }
      }),
methods: {
      nextReplace(){
        this.$router.replace("/")
      }
}

思路:

  在第一次進入stuInfo頁面填寫完信息提交成功后,把一個成功的狀態存儲到vuex中,上面代碼中profileComplete就是這個狀態,然后在該頁面中通過beforeRouterEnter判斷vuex中存儲的狀態來確定是不是第一次進入該頁面,在beforeRouterEnter中不能使用this,只可以使用next函數中的實例來找到vue的實例拿取狀態,要想跳轉到其他地方就需要在methods中單獨定義一個跳轉的方法,通過next找到實例調用方法。

 


免責聲明!

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



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