Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

vue2.x

プレコンセプト:

ルーティングフックのカテゴリ

合計3つのカテゴリーと7つのフックがあります。

ルーティングとコンポーネントの概念(フック機能の理解を容易にするため)

ルーティングとコンポーネントは 2 つの概念であり、大まかに次のように考えることができます。

  • ルートはブラウザのURLです
  • コンポーネントは、Web ページに表示されるさまざまな種類のコンテンツです。

グローバルルーティングフック

router.beforeEach(to, from, next){ } 事前ナビゲーションガード

ルーティング前

router.afterEach(to, from, next){ } 投稿ナビゲーションガード

ルートが入った後

router.beforeResolve(to, from, next){ } 解決ガード

コンポーネントを解析するときに、すべての構成が読み込まれ、以前のレベルがすべて通過しています。コンポーネントを解析する前に実行します。

ルーティング構成ガードフック

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-iNt9TxY9-1631622860323) (C:\Users\hwm\AppData\Roaming\Typora\typora-user-images\image-20210914193901604.png)]

beforeEnter() はルーティング構成情報を読み取る前に呼び出されます

beforeCreate() の前に実行される

const ルーター = 新しい VueRouter({
  ルート: [
    {
      パス: '/foo',
      コンポーネント: Foo、
      beforeEnter: (to, from, next) => { }
    }
  ]
})

コンポーネントのガードフック

beforeRouteEnter(to, from, next){ } コンポーネントに入る前

デフォルトでは、 thisコンポーネントインスタンスを取得することはできません。

ただし、次の方法でアクセスできます。

beforeRouteEnter(to, from, next){ 

  // next() のコールバック関数は、ルートに入るときにインスタンス化され実行されます next(vm => {
    // vmは現在のコンポーネントと同等です
  })
}

beforeRouteUpdate(to, from, next){ } コンポーネントを変更する前に

現在のコンポーネントはルーティングアドレスの変更をまだ使用しており、上記の2つの条件が満たされた場合にのみ実行されます。

beforeRouteLeave(to, from, next){ } コンポーネントを離れる前に

ルーティングフックの実行順序

例: コンポーネント A からコンポーネント B へジャンプする

beforeRouteLeave()最初にコンポーネントAを離れる

beforeEach()グローバル - フロントナビゲーションガード

ルーティング構成情報を読み取る前のbeforeEnter() (Bルーティング情報の読み取り)

コンポーネントに入る前にbeforeRouteEnter()

beforeResolve()解決ガード

afterEach()グローバル - 投稿ナビゲーションガード

ルート B に更新がある場合、次の 3 つのフックが毎回実行されます。

beforeEach()グローバル - 事前ナビゲーションガード

beforeResolve()グローバル - 解決ガード

コンポーネント内のbeforeRouteUpdate() - コンポーネントを変更する前

vue3.x

Vue3.x は vue2.x とわずかに異なるだけなので、ここでは違いについてのみ説明します。

比較表

画像の説明を追加してください

相違点と補足:

  • Vue2.x には 3 つのコンポーネントがあります。コンポーネント A がコンポーネント B にジャンプする場合、コンポーネント B にはサブコンポーネントがあります。

コンポーネントBのサブコンポーネントはルーティングフックをトリガーしません。

  • Vue3.x には 3 つのコンポーネントがあります。コンポーネント A がコンポーネント B にジャンプする場合、コンポーネント B にはサブコンポーネントがあります。

コンポーネントBのサブコンポーネントはルーティングフックをトリガーします: onBeforeRouteUpdateとonBeforeRouteLeave
コンポーネントBのサブコンポーネントはルーティングフックをトリガーしません。

  • Vue3.x には 3 つのコンポーネントがあります。コンポーネント A がコンポーネント B にジャンプする場合、コンポーネント B にはサブコンポーネントがあります。

コンポーネントBのサブコンポーネントはルーティングフックをトリガーします: onBeforeRouteUpdateとonBeforeRouteLeave

以上が、Vue2.x と Vue3.x のルーティングフックの違いについての詳しい説明です。Vue2.x と Vue3.x のルーティングフックの違いについての詳細は、123WORDPRESS.COM の他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • vue3 キャッシュページキープアライブと統合ルーティング処理の詳細な説明
  • Vue3.0とBootstrapを組み合わせてマルチページアプリケーションを作成する
  • Vue3.0はドロップダウンメニューのカプセル化を実装します
  • Vue3+TypeScriptは再帰メニューコンポーネントの完全な例を実装します
  • Vue3ルーティングVueRouter4を使用する簡単な例
  • Vue2/vue3 ルーティング権限管理方法の例
  • Vue3 ページ、メニュー、ルートの使用

<<:  Linux システム (Centos6.5 以上) のインストール JDK チュートリアル分析

>>:  LinuxシステムにTomcatをインストールし、サービスの起動とシャットダウンを構成する

推薦する

ボタントリガーイベントを使用して背景色の点滅効果を実現します

背景色の点滅効果を実現するには、次のコードを <body> 領域に追加するだけです。コー...

CSS3はさまざまな境界効果を実現します

半透明の境界線結果: 実装コード: <div> 半透明の境界線が見えますか? </...

Mongodb の GUID 表示の問題の詳細な分析

問題を見つける最近、プログラムのストレージを Mongodb に移行したところ、Guid 型が書き込...

Linux7 ベースの Hadoop のインストールと構成の詳細なグラフィック説明

上記のように材料を準備します(ps: hadoop-3.1.2-srcはhadoop-3.1.2に変...

Windows 10 Home Edition に Docker for Windows をインストールする

0. 背景ハードウェア: Xiaomi Notebook Air 13/Inter Core i7-...

MySQL 5.6 圧縮パッケージのインストール方法

MySQL には、msi インストールと zip 解凍の 2 つのインストール方法があります。 zi...

VUEは底部吸引ボタンを実装

この記事では、VUEの具体的なコードを共有して、下部吸引ボタンを実装する例を紹介します。具体的な内容...

Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項

/************************ * Linux メモリ管理 *********...

CentOS 8 に MariaDB をインストールするための詳細なチュートリアル

MariaDB データベース管理システムは MySQL のブランチであり、主にオープンソース コミュ...

例を通してMySQLの更新がテーブルをロックするかどうかを判定する

2つのケース: 1. 索引あり 2. 索引なし前提条件:方法: コマンドラインを使用してシミュレート...

W3C チュートリアル (5): W3C XML アクティビティ

XML は、データを記述、保存、送信、交換するために設計されています。 XML 1.0 は XML ...

nginx「504 ゲートウェイタイムアウト」エラーを解決する

ウェブサイトを作成する学生は、アクセス時に一部の nginx サーバーが 504 Gateway T...

jQueryはシンプルなポップアップウィンドウ効果を実装します

この記事では、簡単なポップアップウィンドウ効果を実現するためのjQueryの具体的なコードを参考まで...

Linux仮想マシンの静的IPアドレスを構成するための手順を完了します

序文多くの場合、仮想マシンを使用します。たとえば、一部のテストは検出されません。何かを壊すことを心配...

Angular の 12 の典型的な問題について簡単に説明します

目次1. Angular 2 アプリケーションのライフサイクル フックとは何ですか? 2. Angu...