Vueのレスポンシブシステムの基本原則
次に、この方法の使用法を簡単に確認し、この原則を完全に理解できるようにいくつかの実用的な例を使用します。 1. Object.definePropertyの使い方を確認するパラメータの説明: obj: 対象オブジェクト prop: 操作対象となる対象オブジェクトのプロパティ名 description: 記述子 オブジェクトに渡された戻り値 記述子のいくつかの属性。いくつかの属性を簡単に紹介します。 enumerable、プロパティが列挙可能かどうか。デフォルト値は false です。 プロパティを変更または削除できるかどうかを構成可能。デフォルト値は false です。 書き込み可能、プロパティが変更可能かどうか、デフォルト値は false get、属性を取得するメソッド。 set、プロパティを設定するメソッド。 完全な使用方法: オブジェクト.defineProperty(obj, prop, 記述子) 2. 練習1: Object.definePropertyを使用して人の年齢プロパティを監視する落とし穴 以下のコードを見てください。一見、何も問題がないように見えますか? 誰かが person の age 属性を読み取ると、 person の age 属性を返します。誰かが person の age 属性を変更すると、 person.age の値を直接変更します。 しかし!学生の皆さん、実行した後、エラーは発生しませんが、コンパイラは「@@Someone read the age property」を出力し続けます。 これはなぜでしょうか?考えてみてください。get 関数で person.age を直接返すと、これは人物の age 属性を再度読み取ることになりますか?このとき、プログラムは age の get 関数を何度も繰り返し実行します。 たとえば、これは、age を読み取りたいので、コンパイラーに person.age を出力したいと伝えるのと同じです。コンパイラーは person.age をチェックし、get 関数があることを発見したので、get 関数を実行します。この時点で、その値を取得することになると思いますが、get 関数が再びコンパイラーに person.age が欲しいと伝えるとは予想していませんでした。こうして悪循環が形成されます! ! それで、どうやって解決するのでしょうか? get で person.age を直接返すことはできないので、この属性の値を取得するにはどうすればよいでしょうか? 回答:変数に置き換えることはできますか? person.age の値を変数 ageNumber に格納します。値を読み取る場合は ageNumber の値を返し、値を変更する場合は ageNumber の値を変更します。 これにより、get 関数と set 関数で person.age を直接使用してアクセスする必要がなくなるのではないでしょうか。 正しいコード この時点で効果は完了しており、読み取りおよび変更時に監視できます。 3. データブローカーデータブローカーとはどういう意味ですか? A:簡単に言うと、オブジェクトプロキシを介して別のオブジェクトのプロパティを操作(読み取り/書き込み)することです。 ちょっと抽象的ですよね?次の小さな例でこれを説明しましょう。 教師が生徒の成績を確認または変更したい場合、生徒オブジェクトを直接操作することなく、教師オブジェクトを直接操作できます。 上記で説明したいのは、教師オブジェクト(teacher)が生徒オブジェクト(student)のスコア属性(score)の操作(読み取り/書き込み)を委譲するということです。 4. Vueでレスポンシブ思考を実装するVue2 の基本的な知識がある学生は、Vue の data() {} で定義されたデータが vm オブジェクトにマウントされることを知っている必要があります。次に、this.data という名前を通じてデータを操作します。 これは、上記の小さな例のシナリオと同等でしょうか? ここで、vm オブジェクトは、定義したデータ オブジェクト内の属性の操作 (読み取り/書き込み) をプロキシします。 Vue のレスポンシブ原則を完全に実装するために別の例を使用しましょう。 データオブジェクト内のすべての属性をプロキシのVMオブジェクトに渡します(VMにデータオブジェクト内の属性の(読み取り/書き込み)操作を制御させます)。データが変更されると、対応するビューを更新できます。 要約する1. Vue のデータプロキシ: vmオブジェクトを使用して、データオブジェクト内の属性の操作(読み取り/書き込み)をプロキシします。 2. Vue のデータプロキシの利点:データ内のデータのより便利な操作 3. 基本原則: VM に追加される各プロパティに対して、ゲッター/セッターを指定します。 4. Vueでレスポンシブ思考を実装する
1. 下の図の方法は、データオブジェクトのgetとsetを設定するための一般的な方法です。 2. 新しいVueを作成すると、ユーザーが渡したデータオブジェクトがVueインスタンスに直接マウントされます。 次に、Vueインスタンス上のデータオブジェクトを監視します(レスポンシブ処理) この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux で FastDFS を使用してイメージ サーバーを構築する
>>: MySQL はカスタムシーケンスを使用して row_number 関数を実装します (詳細な手順)
ウェブページを作成するときに、フォームを挿入した後、フォームの上下に空白行が表示されることがよくあり...
広告を閉じるまでのカウントダウンを実装するために JavaScript を使用するまだフロントエンド...
モチベーション学習の必要性から、海外のサーバーメーカー(どこのメーカーかは言いません)のVPSサービ...
1. 属性付きHTMLタグXML/HTML コードコンテンツをクリップボードにコピー< htm...
最終結果はこんな感じです、かわいいでしょう… PS: HTML と CSS の知識があればベストです...
ReadOnly 属性を持つ TextBox は、クライアント上で次のマークアップとして表示されます...
1. yumの紹介Yum (フルネームは Yellow dogUpdater、Modified) は...
背景フレックス レイアウトにより、配置とスペースの割り当てがより効果的に実現されます。最近、flex...
序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...
この実験では、空のデータベース、オフライン、オンラインの 3 つのモードで、1 つのマスターと 2 ...
目次React Hooks に基づく状態共有の実装ユーザーエクスペリエンスこの記事では、主に Rea...
MySQL の多くのテーブルには、NULL が列のデフォルト属性であるため、アプリケーションが NU...
目次概要フロントエンド知識システムフロントエンドの3つの要素プレゼンテーション層 (CSS)動作レイ...
最近、プロジェクトで問題が発生しました。サーバー側のプログラムが突然クラッシュして終了しました。クラ...
ラベル表示モード(重要) divタグとspanタグ1. スタイルはまったく同じですが、ラベルが異なり...