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パラダイムの使用に関する詳細な説明

推薦する

JS ES 新機能テンプレート文字列

目次1. テンプレート文字列とは何ですか? 2. 複数行のテンプレート文字列2.1 式付きテンプレー...

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

1. パラダイムこのパラダイムの英語名は Normal Form であり、1970 年代にリレーショ...

Linux で Squid プロキシ サーバーを構築するための完全な手順

序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...

NavicatでMySqlスケジュールタスクを作成する方法の詳細な説明

Navicat で MySql スケジュールタスクを作成する詳細な説明イベントは、MySQL が特定...

HTML/CSS での空白処理とページ内の空白を保持する方法

HTML の空白ルールHTML では、コンテンツ内の複数のスペースは通常 1 つとみなされ、連続する...

DockerはMariaDBのサブライブラリとサブテーブル、および読み書き分離機能を実装します

目次1. はじめに2. 環境整備1. 基本環境3.Mysqlマスタースレーブ構成をインストールする1...

クリックナンバーゲームを実装するネイティブJS

参考までに、クリックナンバーゲームをネイティブJSで実装しました。具体的な内容は以下のとおりです。最...

IE8はマルチ互換モードを使用してWebページを正常に表示します

IE8には複数の互換モードがあります。 IE プラットフォームの設計者である Chris Wilso...

Vue で動的パラメータと計算プロパティを使用する方法

1. 動的パラメータ2.6.0 以降では、角括弧で囲まれた JavaScript 式をディレクティブ...

CSS における z-index: 0 と z-index: auto の違い

最近、スタック コンテキストについて学習しています。学習の過程で、z-index が 0 の場合と ...

MySQLで現在の時間間隔の前日のデータをクエリする

1. 背景実際のプロジェクトでは、分散スケジュールされたタスク実行の状況に遭遇することがあります。ス...

Linuxドライバのプラットフォームバスの詳細説明

目次1. プラットフォームバスの紹介1.1. Linuxドライバの分離と階層化1.1.1. Linu...

MySql 最適化のための my.ini 中国語構成スキームの詳細な説明: InnoDB、4GB メモリ、および複数のクエリ

この記事は、4G メモリ システム用の MySQL 構成ファイル ソリューションです (主に Inn...

Centos7 に DAMO データベースをインストールするチュートリアル

1. 準備Linux オペレーティング システムをインストールした後、ここで Linux 7 を選択...

シェルスクリプトを使用して CentOS7 に python3.8 環境をインストールする (推奨)

ワンクリック実行仮想マシンに Python 3.8 をインストールするには、ネットワーク アダプター...