Vueのライフサイクルについて詳しく説明します

Vueのライフサイクルについて詳しく説明します

序文

最近、Vueを学ぶ人が増えています。VueフレームワークやReactフレームワークを学ぶことも、フロントエンド開発者にとって必須のスキルとなっています。今日はVueのライフサイクル関数についてお話します。Vueのライフサイクル関数の参照価値は非常に高いです。一緒に知りましょう〜

1. Vue2 のライフサイクル

インスタンスのライフサイクル

ライフサイクルを紹介する前に、Vue でページ コンテンツをレンダリングするときに、次のプロセスが発生することを知っておく必要があります。

  1. 文法を解析すると AST が生成されます。
  2. AST の結果に従って、データの初期化を完了します。
  3. AST 結果とデータ バインディングに基づいて仮想 DOM を生成します。
  4. 仮想 DOM は実際の DOM を生成し、それをページに挿入します。その時点でページがレンダリングされます。

バインドされたデータが更新されると、次のプロセスが発生します。

  1. フレームワークはデータ変更イベントを受信し、そのデータに基づいて新しい仮想 DOM ツリーを生成します。古い仮想 DOM ツリーと新しい仮想 DOM ツリーを比較して、違いを確認します。
  2. 実際の DOM ツリーに差異を適用します。つまり、差異に応じてページ コンテンツを更新します。

ページのコンテンツをクリアすると、次のようになります。

  1. インスタンスからログアウトし、ページ コンテンツをクリアし、バインドされたイベントやリスナーなどを削除します。

Vue はインスタンスに対して合計 8 つのライフサイクル関数を提供します。

  1. beforeCreate(): インスタンスを初期化する前は、データやメソッドなどを取得できません - 1の後、2の前
  2. created(): インスタンス化の初期化が完了しました。この時点で、データとメソッド イベントでデータを取得できます (2 の後、3 の前)
  3. beforeMount(): 仮想DOMは作成されますが、ページにマウントされていません。vm.$elはマウントされていないテンプレートを取得できます - 3の後、4の前
  4. マウント():データバインディングが完了し、実際のDOMがページにマウントされ、vm.$elは実際のDOMを取得できます——4
  5. beforeUpdate(): データが更新され、DOM Diff は差分を取得しますが、ページは更新されません - 5 以降、6 以前
  6. updated(): データが更新され、ページも更新されます - 6
  7. beforeDestroy(): インスタンスの破棄前 - 7 以前
  8. 破棄(): インスタンスの破棄が完了しました - 7

インスタンスのライフサイクルについては、公式の図も参照してください。

その他のライフサイクルフック

その他のライフサイクル関数には activated()、deactivated()、errorCaptured() などがあります。

キープアライブの固有のライフ サイクルがアクティブ化および非アクティブ化されます。

keep-alive でラップされたコンポーネントは、切り替え時に破棄されずにメモリにキャッシュされ、非アクティブ化されたフック関数を実行します。キャッシュレンダリングをヒットした後、アクティブ化されたフック関数が実行されます。

errorCaptured() フックは、子コンポーネントでエラーがキャプチャされたときに呼び出されます。

2. Vue3のライフサイクル

Vue3 では、Options API と Composition API を使用する場合、ライフサイクルが異なります。

オプション API ライフサイクル

  • beforeDestroy が beforeUnmount に変更されました
  • 破壊されてマウント解除

なぜこのように変更したのかと尋ねられた You Dada 氏は、これは主に命名規則を改善するためだと答えました。対応する中国語の単語はまさにアンインストール コンポーネントであり、以前のマウント コンポーネントと非常に一致しています。

  • その他のライフサイクルはVue2に従います

コンポジション API ライフサイクル

Composition API でフック関数を使用するには、フック関数の前に「on」を追加し、setup 関数内で次のようになります 👇

これらのフック関数を導入するだけで、

Vue3 のフック関数は次のとおりです。

  1. マウント前()
  2. マウント時()
  3. 更新前()
  4. 更新時()
  5. マウント解除前()
  6. マウント解除時()
  7. アクティブ化()
  8. onDeactivated()
  9. エラーキャプチャ時()

よく見ると、2 つのライフサイクル メソッドが消えていることがわかります。BeforeCreate() と created() は Composition API に表示されなくなります。setup() メソッドのみがあります。setup() メソッドは beforeCreate() と created() の間に表示されます。

2つの新しいVue3ライフサイクル関数

  • onRenderTracked(): この関数は、レンダリング関数でリアクティブ依存関係に初めてアクセスしたときに呼び出されます。このフックは、どの依存関係が追跡されているかを確認したいときに便利です。デバッグにも役立ちます。
  • onRenderTriggered(): これは、新しいレンダリングがトリガーされたときに呼び出され、どの依存関係がコンポーネントの再レンダリングをトリガーしたかを検査できるようにします。

やっと

⚽この記事では主にVueのライフサイクル機能について紹介します。何か得られるものがあると思いますよ〜

Vue ライフサイクルに関するこの記事はこれで終わりです。Vue ライフサイクルに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue ライフサイクルにおけるコンポーネント化をご存知ですか?
  • Vueのライフサイクルを見てみましょう
  • Vueのライフサイクルとデータ共有の詳細な説明
  • Vueのライフサイクルについて学びましょう
  • Vueのライフサイクルに関するよくある話
  • Vueのライフサイクルについての簡単な説明
  • Vueライフサイクル機能の詳細な説明
  • Vueライフサイクルの詳細な説明
  • Vueのライフサイクルを整理する
  • Vue のライフサイクルの紹介

<<:  Dockerコミットの使い方の詳しい説明

>>:  MySQLパラダイムの使用に関する詳細な説明

推薦する

mysql5.7.19 winx64 インストールおよび構成方法のグラフィック チュートリアル (win10)

mysql 5.7.19 winx64のインストールチュートリアルは以下のように記録され、みんなと...

CentOS サーバーのセキュリティ構成戦略

最近、ブルートフォース攻撃によるサーバのクラッキングが頻発しています。侵入行為を大まかに分析し、よく...

Bash の山括弧の深い理解 (初心者向け)

序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...

Centos8 で Apache httpd2.4.37 を使用して Web サーバーをインストールする詳細な手順

ステップ 1: yum install httpd -y #httpd サービスをインストールします...

Nginx 急ぎ購入 電流制限構成 実装分析

ビジネス上のニーズにより、急ぎの購入が発生することが多いため、ロード バランシング フロント エンド...

nginx を使用して静的リソース サーバーを構築する方法

Windows を例にとると、Linux も実際には同じです。静的リソースサーバーを構築するパソコン...

Win7 で IIS7 Web および FTP サービスを完全にアンインストールする方法

昨日、パソコンにPHP開発環境をセットアップした後、Apacheサーバーを再起動するとエラーが続きま...

要素UIポップアップコンポーネントをカプセル化する手順

el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...

Dockerが新しいイメージをロードした後にリポジトリとタグ名が両方ともnoneになる問題を解決する

次のコマンドを使用できます: docker tag [イメージID] [名前]:[バージョン]例えば...

Linuxカーネルのアクセス制御セキュリティを強化する方法

背景以前、当社のプロジェクト チームは、Windows、Linux、macOS の 3 つの主要なオ...

js はランダムロールコールを実装します

この記事では、ランダムロールコールを実装するためのjsの具体的なコードを参考までに共有します。具体的...

Vueは画像切り替え効果を実現

この記事の例では、画像切り替え効果を実現するためのVueの具体的なコードを参考までに共有しています。...

nginx ウェブサイト サービスのアンチホットリンクを設定する方法 (推奨)

1. ホットリンクの原則1.1 Webページの準備Web ソース ホスト (192.168.153...

HTML の基礎_一般的なタグ、共通タグ、表

パート 1 HTML <html> -- 開始タグ<ヘッド>ウェブページ上の...

HTML(divレイヤー)を介してFLASHにリンクを追加するための実装コード

今日、クライアントが広告を掲載したいのですが、提供された素材は Flash です。私たちはあまり気に...