1. 応答原理の基盤応答性の基本原理は 拡張: 上記は vue2.0 の基本的な応答性原則です。vue3.0 の基本原則は Proxy で、属性の get および set メソッドの監視、属性の追加と削除の監視などを行うことができます。Object.defineProperty よりも強力ですが、IE11 と互換性がありません。 2. コアオブジェクト: Dep と Watcher 1. computed で定義された計算プロパティ。 2. 時計に書き込まれた監視機能。 3. コンポーネントレンダリングウォッチャー 3. 依存関係を収集して更新する3.1 依存関係の収集Watcher インスタンス オブジェクト w を、それが依存する属性の Dep に配布します。プロセスは次のとおりです。 1. Dep.target を現在の Watcher のインスタンス オブジェクト w に設定します。 2.w は定義された関数 (つまり、computed/watch で記述された関数) を実行します。 3. 関数実行プロセス中に data で定義された属性が使用されると、属性の get メソッドがトリガーされます。 get メソッドでは、Dep インスタンス オブジェクト dep が Dep.target に格納されている w を dep.subs 配列に格納して、依存関係のコレクションを完了します。 注: Dep.targetは現在のウォッチャーのインスタンスオブジェクトです。 3.2 依存関係の更新宣言したプロパティを変更すると、プロパティの set メソッドがトリガーされます。set メソッドは、dep.subs 配列に収集された Watcher インスタンス オブジェクトを更新します。つまり、computed および watch で定義した関数をトリガーします。 4. ソースコードのデバッグ4.1 テストページコード<テンプレート> <div> <div>a:<input v-model="a" /> </div> <div>c:{{ c }}</div> <div>b:<input v-model="b" /> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ: () => { 戻る { a: ''、 b: '' } }, 計算: { c() { 'source from ' + this.a を返します。 } }, 時計: b() { console.log('bが変更されました'); } } }; </スクリプト> 上記のコードは、Vue が初期化された後に次のオブジェクトを生成します。 1. オブジェクトの説明属性 a と b に対応する Dep インスタンス オブジェクト (a と b が変更されたときに更新する必要があるウォッチャーを収集): ページ レンダリング関数は、対応する Watcher インスタンス オブジェクト 計算プロパティ c は、対応する Watcher インスタンス オブジェクト ウォッチ リスナー属性 b は、対応する Watcher インスタンス オブジェクト 2. DepとWatcherの関係a と b が変更されるとページを再レンダリングする必要があるため、 計算されたプロパティ c はプロパティ a の変更に依存するため、 b の変更は、watch の定義内の b の listen 関数をトリガーするため、 3. 最終的な関係の結果最後のプロパティ a は依存関係を収集します 最終プロパティ b は依存関係を収集します 4.2 ソースコードのデバッグソースファイルを見つけます: 主に以下の機能が含まれます。 1. コレクション依存のエントリ関数: initState (ページが初期化されるときに実行されます)。初期化の順序は、データ --> 計算済み --> ウォッチです。これは、計算済みがデータに依存し、ウォッチがデータとウォッチに依存するため、依存するものを最初に初期化する必要があるためです。 2. 計算と監視を初期化するときに、ウォッチャーインスタンス化オブジェクトを生成するまずWatcher.get関数を実行し、Dep.targetを現在のWatcherインスタンス化オブジェクトに設定します。 依存関係の収集をトリガーする 計算プロパティで関数を実行します。データ内のプロパティにアクセスすると、データ プロパティの get メソッドがトリガーされ、依存関係の収集がトリガーされます。 このプロパティが変更されると、set メソッドがトリガーされ、dep.subs 内のウォッチャー オブジェクトの更新がトリガーされます。 最後に、Watcher の更新関数がトリガーされ、更新されるウォッチャーがキューに入れられます。 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: HTML のスクロールバーについて/スクロールバーの削除
>>: @media レスポンシブ CSS を使用してさまざまな画面に適応する例
インターフェース全体に背景画像を表示したい場合は、当然 body に背景を追加することを考えます。コ...
最初のステップは、対応するデータベースモジュール(sql)をプロジェクトファイル( .pro )に追...
公式サイトからMySQL-5.7.11-winx64の圧縮版をダウンロード。インストール後、パスワー...
目次序文: 1. 役割の紹介2. 役割に関連する操作要約:序文:前回の記事では、MySQLの権限管理...
var numA = 0.1; var numB = 0.2; アラート(numA + numB)...
この記事では、ビデオタグを使用してビデオ再生を実装するVueの具体的なコードを参考までに共有します。...
目次現象:ポートの使用:ファイルにスペルミスがあります:現象: Tomcat がインストールされ、W...
Linux での動的ライブラリ ファイルのファイル名は libxxx.so のようになります。ここで...
複合インデックス (結合インデックスとも呼ばれます) は、複数の列に対して作成されるインデックスです...
1. Webページを開くと503サービス利用不可が表示されますが、更新すると正常にアクセスできます。...
SVN サービスのバックアップ手順1. ソースサーバーとターゲットサーバーを準備するソースサーバー:...
質問:最近、プロジェクトの統計を行っていたときに、テーブルを上下にスクロールしたときにテーブルの先頭...
障害サイト: MySQL サーバーにログインし、どのコマンドを実行してもこのエラーが発生します my...
環境ホスト名IPアドレス仕えるプロメテウス192.168.237.137プロメテウス、グラファナノー...
参考までに、Vue シングル サインオンのデモをご紹介します。詳細を知りたい方のお役に立てれば幸いで...