vue 獲取跳轉上一頁元件資訊
阿新 • • 發佈:2018-12-12
專案中有一需求,需要根據不同的頁面路徑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()之後執行。