【vue】Vue-Router报错:Uncaught (in promise)Error: Navigation cancel from “/” to “/1” with a new navig


1. 質問:

ここに画像の説明を挿入
ここに画像の説明を挿入

2. 分析:

このエラーは vue-router の内部に起因するものである没有对编程式导航进行catch处理ため、およびthis.$router.push()ルーティング ジャンプを使用している場合、同じアドレスにジャンプしたり、ジャンプの実装/アクティブ化機能で再度別のアドレスにジャンプしたりすると、エラーが発生します。this.$router.replaceただし、バージョン 3.1.0 以降では、ページはリダイレクト コンソールで Uncaught (in promise) を報告し、push メソッドと replace メソッドは promise を返し、コンソールにキャッチされていない例外が表示される場合があります。宣言型ナビゲーションでこの問題が発生しない理由は、vue-router が内部で関連する処理を既に行っているためです。

3. ソリューション

ここに画像の説明を挿入

//解决编程式路由往同一地址跳转时会报错的情况
const originalPush = Router.prototype.push;
const originalReplace = Router.prototype.replace;
//push
Router.prototype.push = function push(location, onResolve, onReject) {
    
    
  if (onResolve || onReject) {
    
    
    return originalPush.call(this, location, onResolve, onReject);
  }
  return originalPush.call(this, location).catch(err => err);
};
//replace
Router.prototype.replace = function push(location, onResolve, onReject) {
    
    
  if (onResolve || onReject) {
    
    
    return originalReplace.call(this, location, onResolve, onReject);
  }
  return originalReplace.call(this, location).catch(err => err);
};

おすすめ

転載: blog.csdn.net/weixin_53791978/article/details/130132905