1. 程式人生 > >vue 獲取跳轉上一頁元件資訊

vue 獲取跳轉上一頁元件資訊

專案中有一需求,需要根據不同的頁面路徑url跳轉進行不同的操作,首先需要獲得上一頁面的url,利用 beforeRouteEnter 這個鉤子中的from引數獲得之前url的資訊,然後給 next 傳遞迴調來訪問當前元件的例項。 

操作程式碼為:

beforeRouteEnter (to, from, next) {
       console.log(to)
       console.log(from)
 if (from.name === null) {
     //判斷是否登入
    this.isYJLogin()
  }

},
methods: {
 isYJLogin(){
    localStorage.setItem('account', this.code)
  }
}

 如下圖所示:

根據列印,也可以用這個name來判斷,但是卻報個錯誤:

檢視程式碼,寫法沒有錯誤啊,最終檢視官方文件,發現官方文件中也有說明:

beforeRouteEnter 守衛不能訪問 this,因為守衛在導航確認前被呼叫,因此即將登場的新元件還沒被建立。

可以這樣更該下程式碼如圖:

data(){
     return {
       newPath:''
     }
   },
   beforeRouteEnter(to, from, next){
     next(vm => {
       // 通過 `vm` 訪問元件例項,將值傳入newPath
        vm.newPath = from.name
       if (from.name === null) {
         //判斷是否登入
          vm.isYJLogin()
        }
     })
},
methods: {
 isYJLogin(){
    localStorage.setItem('account', this.code)
  }
}

注:beforeRouteEnter這個方法在mounted:function()之後執行。