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をインストールし、サービスの起動とシャットダウンを構成する

推薦する

TypeScript の関数

目次1. 関数の定義1.1 JavaScript の関数1.2 TypeScriptの関数2. オプ...

ActiveMQ メッセージ サービスを構築するための Docker 学習方法の手順

序文ActiveMQ は、Apache が開発した最も人気があり強力なオープン ソース メッセージ ...

Mysql5.7.14 Linux版のパスワードを忘れた場合の完璧な解決策

/etc/my.confファイルで、[mysqld]の下に次の行を追加します: skip-grant...

VueはTeleportをベースにModalコンポーネントを実装します

目次1. テレポートについて知る2. テレポートの基本的な使い方3. 最初のステップの最適化4. 第...

JavaScript プロトタイプのデータ共有とメソッド共有の実装を調べる

データ共有プロトタイプにはどのようなデータを書き込む必要がありますか?共有する必要があるデータはプロ...

tomcatでcatalina.outログをカットする3つの方法の詳細な説明

1. ログセグメンテーションのためのLog4j 1) log4j-1.2.17.jar、tomcat...

Nginx 正規表現の詳細な説明

Nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

Vueは、センシティブな単語フィルタリングコンポーネントを検出するためのさまざまなアイデアを実装しています。

目次前面に書かれた要件分析 v1アイデア1: インターセプションメソッドを使用して入力ボックスの入力...

WeChatアプレットが左右連携を実現

この記事では、WeChatアプレットの左右連動を実現するための具体的なコードを参考までに紹介します。...

Vue組み込みコンポーネントのキープアライブの使用例

目次1. キープアライブの使用使用例: 1. すべてのページをキャッシュする: 2. 条件に基づいて...

CentOS7.6にMYSQL8.0をインストールする詳細な手順

1. 一般的に、CentOS では mariadb がデフォルトでインストールされているため、まず ...

MySQLフィルタリングレプリケーションのアイデアの詳細な説明

目次mysql フィルター レプリケーションメインデータベースに実装ライブラリから実装いくつかの質問...

JavaScript offsetParent のケーススタディ

1. offsetParentの定義: offsetParentは子要素に最も近い位置に配置された親...

Nginx ロードバランシングの設定方法

目次Nginx 負荷分散構成Nginx 負荷分散戦略ポーリング(デフォルト)重さip_ハッシュ公正(...

docker-compose を使用して mongodb と mysql を構築する詳細なプロセス

docker-compose で mongodb と mysql を構築する詳細な方法を見てみましょ...