Vueライフサイクルの紹介とフック機能コンポーネントの内部構造はフェーズごとに異なるため、通常はマウント フェーズでの Ajax データ取得など、特定のフックが特定の処理を実行します。 Vue インスタンスの作成からインスタンスの最終的な破棄までのプロセス全体を VUE ライフサイクルと呼びます。このライフサイクルでは、Vue インスタンスの作成から始まり、まず Vue インスタンスが作成され、次にデータが初期化され、テンプレートがコンパイルされ、DOM がマウントされ、DOM がレンダリングされ、オブジェクトのプロパティが更新され、DOM がレンダリングされ、バインディングが解除されて破棄されます。 VUEライフサイクルフックライフサイクル フックは、ライフサイクル時間、ライフサイクル関数とも呼ばれ、ライフサイクル フックは、vue ライフサイクルでトリガーされるさまざまなイベントです。これらのイベントはライフサイクル フックと呼ばれます。vue ライフサイクルでは、そのほとんどは作成、ハング、更新、破棄の 4 つのステージに分かれています。これらの 4 つのステージはそれぞれ 2 つのライフサイクル フックに対応しています。 1. 作成部分 (create) は、Vue インスタンスが初期化されるときです。簡単に言うと、この操作をコード var app = new Vue() で実行し、Vue ライフサイクルの作成フェーズに入ります。作成フェーズでは、beforeCreate と created という 2 つのプログラミング インターフェイスが提供されます。 両方のインターフェースは作成フェーズでトリガーされますが、2 つのインターフェースにはいくつかの違いがあります。beforeCreate は created よりも前にトリガーされます。つまり、vue インスタンスが初期化された後、データが読み取られる前にトリガーされます。この時点で data 内のデータが読み取られると、unfined がプロンプトされます。 created はインスタンスが作成された後に呼び出されます。この時点では、data 内のデータは書き込まれていますが、DOM はまだマウントされていないため、ページに関連付けられていません。ここでマウント段階に入ります。 2. マウントフェーズ (マウント):このフェーズでは、ページ内の DOM をインスタンス化された Vue オブジェクトにマウントします。簡単に言うと、el: '#dom' が実行されます。この段階では、beforemount と mount という 2 つのインターフェースもプログラムする必要があります。これら 2 つのインターフェースの主な違いは、DOM がインスタンス オブジェクトにマウントされるかどうかです。Beforemount はマウント前にトリガーされ、テンプレートのみが解析されます。このとき、マウントする必要がある DOM の innerHTML が出力されている場合は、データをレンダリングせずにテンプレートをそのまま出力します。マウント後、データ内のデータをページ上にレンダリングできるようになります。このフェーズの後に更新フェーズが続きます。 3. 更新フェーズ:このフェーズでは、ページ上のデータが最初の読み込み後に再度更新されます。また、beforeupdate と update の 2 つのインターフェースにも対応しています。これら 2 つのインターフェースの主な違いは、ページ DOM がレンダリングされるかどうかにあります。 data 内のデータを変更し、変更が完了した後に beforeupdate をトリガーすると、data 内の属性値は変更されていますが、ページの DOM はレンダリングされていません。更新はページ上のデータをレンダリングすることです。この時点で、Vue のライフサイクルは更新段階に達しています。通常の使用では、何度も更新段階に入り、ページ上のデータにさまざまな変更を加えることがよくあります。ただし、不要なイベントを閉じてメモリを解放するには、破棄フェーズが必要です。 Vue ライフサイクルの紹介上記の段階 コード監視フック機能の使用 <!DOCTYPE html> <html> <ヘッド> <タイトル></タイトル> <script type="text/javascript" src="https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script> </head> <本文> <div id="アプリ"> <p>{{ メッセージ }}</p> </div> <script type="text/javascript"> var アプリ = 新しい Vue({ el: '#app', データ: { メッセージ: 「xuxiao は男の子です」 }, beforeCreate: 関数() { console.group('beforeCreate 作成前のステータス ================》'); console.log("%c%s", "color:red" , "el : " + this.$el); //未定義 console.log("%c%s", "color:red","data : " + this.$data); //未定義 console.log("%c%s", "color:red","メッセージ: " + this.message) }, 作成: 関数 () { console.group('created 作成完了ステータス ================》'); console.log("%c%s", "color:red","el : " + this.$el); //未定義 console.log("%c%s", "color:red","data : " + this.$data); //初期化されましたconsole.log("%c%s", "color:red","message: " + this.message); //初期化されました}, beforeMount: 関数() { console.group('beforeMount マウント前のステータス ===============》'); console.log("%c%s", "color:red","el : " + (this.$el)); //初期化済み console.log(this.$el); console.log("%c%s", "color:red","data : " + this.$data); //初期化されましたconsole.log("%c%s", "color:red","message: " + this.message); //初期化されました}, マウント: 関数 () { console.group('mounted マウント終了ステータス ================》'); console.log("%c%s", "color:red","el : " + this.$el); //初期化済み console.log(this.$el); console.log("%c%s", "color:red","data : " + this.$data); //初期化されましたconsole.log("%c%s", "color:red","message: " + this.message); //初期化されました}, beforeUpdate: 関数 () { console.group('beforeUpdate 更新前のステータス ===============》'); console.log("%c%s", "color:red","el : " + this.$el); console.log(this.$el); console.log("%c%s", "color:red","データ: " + this.$data); console.log("%c%s", "color:red","メッセージ: " + this.message); }, 更新: 関数 () { console.group('更新されました 更新完了ステータス ================》'); console.log("%c%s", "color:red","el : " + this.$el); console.log(this.$el); console.log("%c%s", "color:red","データ: " + this.$data); console.log("%c%s", "color:red","メッセージ: " + this.message); }, beforeDestroy: 関数 () { console.group('beforeDestroy 破棄前の状態 ================》'); console.log("%c%s", "color:red","el : " + this.$el); console.log(this.$el); console.log("%c%s", "color:red","データ: " + this.$data); console.log("%c%s", "color:red","メッセージ: " + this.message); }, 破棄: 関数 () { console.group('destroyed 破壊完了ステータス ================》'); console.log("%c%s", "color:red","el : " + this.$el); console.log(this.$el); console.log("%c%s", "color:red","データ: " + this.$data); console.log("%c%s", "color:red","メッセージ: " + this.message) } }) </スクリプト> </本文> </html> 作成およびマウント関連
さらに、赤い領域では、el がまだ {{message}} であることがわかります。これは、最初にピットを占有する Virtual DOM (仮想 Dom) テクノロジが適用されている場所です。値は後でマウントされたときにレンダリングされます。 アップデート関連破壊する破壊に関しては、まだよくわかっていません。コンソールでコマンドを実行して、Vue インスタンスを破棄します。破棄が完了したら、メッセージの値を再度変更し、Vue はこのアクションに応答しなくなります。ただし、元々生成された DOM 要素はまだ存在しています。destroy 操作が実行されると、それらは Vue によって制御されなくなることがわかります。 要約する
この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQLはカバーインデックスを使用してテーブルリターンを回避し、クエリを最適化します。
1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...
以下の手順に従ってください1. request.jsコンテンツ: http リクエスト インターセプ...
他のデバイスの画像をローカルディレクトリにマウントするなど、サーバー上の静的リソースにアクセスする必...
目次MySQL テーブルの断片化の原因行の断片化行内断片化空き領域の断片化MySQL で極度に断片化...
canisue (http://caniuse.com/#search=border-radius)...
1. 呼び出しを実装するステップ:関数をオブジェクトのプロパティとして設定します。これを関数に割り当...
脆弱性の紹介SigRed の脆弱性はワーム化可能であるため非常に危険です。つまり、ユーザーの介入なし...
<br />このセクションでは、XHTML でテキストの書式設定と特殊文字を実装する方法...
この記事では、星空アニメーションを実現するための高度な CSS3 LESS のサンプルコードを次のよ...
停止したすべてのDockerコンテナを1つのコマンドで再起動するdocker ps -a | gre...
Docker の作成Docker Compose は、複数の Docker コンテナを定義して実行す...
MySQLデータベース設計の8つの最適化方法の詳細は次のとおりです。 1. 最も適切なフィールド属性...
この記事の例では、ログイン機能を実現するためのvue+springbootの具体的なコードを参考まで...
1) キャッシュメカニズムの紹介Linux システムでは、ファイルシステムのパフォーマンスを向上させ...
フォームを入力不可にしたい場合は、フォームを次のように設定します。コードをコピーコードは次のとおりで...