VueRouter.prototype.push 重寫了原型上的push方法,統一的處理了錯誤信息


在vue項目中,如果使用$router.push跳轉到一個相同的路由報錯.

在vue-router在3.1.0版本之后,push和replace方法會返回一個promise對象,如果跳轉到相同的路由,就報promise uncaught異常.

方案01-降版本

使用vue-router 3.1.0之前的版本就不會有這個錯誤。但是不推薦,因為這樣就無法得到vue-router新版本提供的功能了。

方案2-使用catch捕獲異常

在使用push或者replace的時候,需要使用catch來處理異常

// 在使用push的時候,需要使用catch來處理可能出現的異常this.$router.push('/login').catch(err=>{})

缺點:在使用push的時候,都需要使用catch處理

方案3-修改push方法

在router/index.js導入VueRouter的時候,進行全局的處理

const routerPush = Router.prototype.push;
Router.prototype.push = function push(location) {
  return routerPush.call(this, location).catch((error) => error);
};

  


免責聲明!

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



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