vue3 ではいくつかのライフサイクル関数が変更されました

青灯夜游
リリース: 2023-01-14 10:45:06
オリジナル
2596 人が閲覧しました

vue3 では 4 つのライフサイクル関数が変更されました。 Vue3 結合 API では beforeCreated および created フック関数をキャンセルし、代わりにステップ フックを使用するため、これは使用できません。 Vue3 のコンポーネント破棄のフック関数は、destroyed および beforeDestroy から beforeUnmount および unmounted に変更されました。

vue3 ではいくつかのライフサイクル関数が変更されました

#このチュートリアルの動作環境: Windows7 システム、vue3 バージョン、DELL G3 コンピューター。

Vue インスタンスには完全なライフ サイクルがあります。つまり、

new Vue()、初期化イベント (.once イベント)、ライフ サイクル、テンプレートのコンパイル、Dom のマウント -> レンダリング、更新 - > ; レンダリングやアンロードなどの一連の処理をVueのライフサイクルと呼びます。

vue アプリケーションには 4 つのメイン イベント (8 フック) があります:

Creation----コンポーネントの作成時に実行されます

Mount----DOM が実行されますマウント時
Update ---- レスポンスデータ変更時に実行
destroy ---- 要素が破棄される直前に実行

Vue2 ライフサイクル

vue3 ではいくつかのライフサイクル関数が変更されました

#(1) beforeCreate(作成前)データ監視 (ゲッターとセッター) と初期化イベントはまだ開始されていません。現時点では、データの応答性の追跡と

イベント/ウォッチャーはセットアップされていません


## data、computed、watch、メソッドのメソッドとデータにアクセスできません。

# (2) 作成済み(作成後)

作成後はcompleted 関数

を自動的に実行します (3) beforeMount (マウント前) マウント開始前に

が呼び出されます. に関連するレンダー関数が初めて呼び出されます。

今回、Vue はテンプレートの解析を開始し、仮想 DOM を生成してメモリに保存しますが、まだ仮想 DOM を実際の DOM に変換してページに挿入していません。

(4) マウント (マウント後)

el が新しく作成された vm.$el (実際の vm.$el のコピー) に置き換えられた後に呼び出されます。 DOM) をインスタンスにマウントします (メモリは仮想 DOM から実 DOM に変換され、実 DOM がページに挿入されます)。 # 通常、この段階で実行されます: タイマーの開始、ネットワーク リクエストの送信、メッセージのサブスクライブ、カスタム イベントのバインドなど。

# #(5)beforeUpdate(更新前)

响应式数据更新时调用,此时虽然响应式数据更新,但是对应的真实 DOM 

还没有被渲染(数据是新的,但页面是旧的,页面和数据没保持同步呢)。
ログイン後にコピー

(6)updated(更新後)

データ変更のため仮想 DOM が再レンダリングされ、パッチが適用された後。

呼び出されると、コンポーネント DOM が更新されるため、DOM に依存する操作を実行できるようになります。ただし、ほとんどの場合、更新の無限ループが発生する可能性があるため、この期間中に状態を変更することは避けるべきです。

# (7) beforeDestroy (破棄前)

##インスタンス破棄前の呼び出し

この段階では、通常、タイマーは閉じられ、メッセージはサブスクライブ解除され、カスタム イベントはバインド解除されます。

(8) destroy (破棄後)

インスタンスが破棄された後に呼び出されます。呼び出し後、 Vue インスタンスはバインド解除され、すべてのイベント リスナーが削除され、すべての子インスタンスが破棄されます。このフックは、サーバー側のレンダリング中には呼び出されません。

nbsp;html>
	
		<meta>
		<title>分析生命周期</title>
		<!-- 引入Vue -->
		<script></script>
	
	
		<!-- 准备好一个容器-->
		<div>
			<h2></h2>
			<h2>当前的n值是:{{n}}</h2>
			<button>点我n+1</button>
			<button>点我销毁vm</button>
		</div>
	

	<script>
		Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

		new Vue({
			el:&#39;#root&#39;,
			// template:`
			// 	<div>
			// 		<h2>当前的n值是:{{n}}
			// 		<button @click="add">点我n+1
			// 	
			// `,
			data:{n:1},
			methods: {
				add(){
					console.log(&#39;add&#39;)
					this.n++
				},
				bye(){
					console.log(&#39;bye&#39;)
					this.$destroy()
				}
			},
			watch:{
				n(){
					console.log(&#39;n变了&#39;)
				}
			},
			beforeCreate() {
				console.log(&#39;beforeCreate&#39;)
			},
			created() {
				console.log(&#39;created&#39;)
			},
			beforeMount() {
				console.log(&#39;beforeMount&#39;)
			},
			mounted() {
				console.log(&#39;mounted&#39;)
			},
			beforeUpdate() {
				console.log(&#39;beforeUpdate&#39;)
			},
			updated() {
				console.log(&#39;updated&#39;)
			},
			beforeDestroy() {
				console.log(&#39;beforeDestroy&#39;)
			},
			destroyed() {
				console.log(&#39;destroyed&#39;)
			},
		})
	</script>
ログイン後にコピー

一般的に使用されるライフ サイクル フック: 1.マウント: Ajax リクエストの送信、タイマーの開始、カスタム イベントのバインド、メッセージのサブスクライブなど [初期化操作]。 2.beforeDestroy: タイマーのクリア、カスタム イベントのバインド解除、メッセージの購読解除など [仕上げ作業] Vue インスタンスの破棄について: (1) 破棄後は、何も表示されません。 Vue 開発者ツールの情報。

(2) カスタム イベントは破棄後無効になりますが、ネイティブ DOM イベントは引き続き有効です。

(3) 通常、beforeDestroy ではデータは操作されません。データが操作されても、更新プロセスが再度トリガーされることはないためです。





Vue3 ライフサイクル

##(1) onBeforeMount

はマウント前に呼び出され、レンダリング関数 render が初めて呼び出されますvue3 ではいくつかのライフサイクル関数が変更されました

(2) onMounted

コンポーネントがマウントされるときに呼び出されます

(3) onBeforeUpdate

データが更新されるときに呼び出されます。これは、仮想 DOM にパッチが適用される前に発生します。

(4) onUpdated

データ変更により仮想 DOM が再レンダリングされ、パッチが適用されるときに呼び出されます

(5) onBeforeUnmount

コンポーネント インスタンスをアンインストールする前に呼び出されます。この段階のインスタンスはまだ正常です。

(6) onUnmounted

コンポーネント インスタンスのアンマウント後に呼び出されます。このフックが呼び出されると、コンポーネント インスタンスのすべての命令が呼び出されます。コンポーネント インスタンスのバインドが解除され、すべてのイベント リスナーが削除され、すべての子コンポーネント インスタンスがアンロードされます。


ライフサイクルにおける vue2 と vue3 の違い

vue2vue3beforeCreatesetup() コンポーネント、データ、メソッドの作成を開始する前にが作成されます createdsetup()beforeMountonBeforeMount コンポーネントがマウントされる前に実行されますノード上の関数。 mountedonMounted コンポーネントのマウント完了後に実行される関数 beforeUpdateonBeforeUpdate コンポーネント更新関数以前に実行されました。 updatedonUpdated コンポーネントの更新が完了した後に実行される関数。 beforeDestroyonBeforeUnmount コンポーネントがノードにマウントされる前に実行される関数。 destroyedonUnmounted コンポーネントがアンマウントされる前に実行される関数。

概要:

1. Vue3 結合 API は、beforeCreated および created フック関数をキャンセルし、代わりにステム フックを使用します。

2. Vue3 のコンポーネント破棄のフック関数は beforeUnmount に置き換えられてアンマウントされます。以前のものは破棄されて beforeDestroy になっています。ただし、Vue3 がVue2 の選択的書き込みメソッド、以前のフック関数は引き続き使用できます。

3. Vue3 の複合 API ライフサイクル関数には、Vue2 選択的 API のライフサイクルよりも多くのプレフィックスがあり、別途インポートする必要があります。 .

関連する推奨事項:

vue.js ビデオ チュートリアル

以上がvue3 ではいくつかのライフサイクル関数が変更されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート