使用ts時vue組件內守衛beforeRouteLeave


項目中有個頁面需要用戶離開時提示用戶,否則會丟失一些數據,vue有個組件內的守衛剛好合適,先上官網例子:

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // 在渲染該組件的對應路由被 confirm 前調用
    // 不!能!獲取組件實例 `this`
    // 因為當守衛執行前,組件實例還沒被創建
  },
  beforeRouteUpdate (to, from, next) {
    // 在當前路由改變,但是該組件被復用時調用
    // 舉例來說,對於一個帶有動態參數的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉的時候,
    // 由於會渲染同樣的 Foo 組件,因此組件實例會被復用。而這個鈎子就會在這個情況下被調用。
    // 可以訪問組件實例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 導航離開該組件的對應路由時調用
    // 可以訪問組件實例 `this`
    const answer = window.confirm('Do you really want to leave? you have     
      unsaved changes!')
    if (answer) {
       next()
    } else {
        next(false)
    }
  }
}    

看起來簡潔明了,但是直接拿到項目中去,會發現沒有觸發,ps(項目用ts);

還需要在該組件加行代碼:

 import {Component, Vue} from 'vue-property-decorator';
  Component.registerHooks([
        'beforeRouteLeave',
    ]);

 


免責聲明!

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



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