Vue での this.$set の使用背景: フロントエンド プロジェクトを書いていたとき、バックエンドから json オブジェクトが提供され、それをページ上にレンダリングしました。しかし、私自身のニーズにより、返されたオブジェクトにフィールドを追加したいので、フィールドをプッシュします。フィールドは追加されますが、ページのレンダリングは変わりません。後で、応答がないことに気が付きました。この新しいフィールドをレスポンシブにしたい場合は、this.$set を使用してデータを挿入する必要があります。 Vue のデータでオブジェクトまたは配列 (配列内の値はオブジェクト) が宣言または割り当てられている場合、オブジェクトに新しいプロパティを追加してこのプロパティの値を更新しても、ビューは更新されません。 使用
ここに小さな例を示します。 オブジェクトにageプロパティを追加し、応答的に変更する <テンプレート> <div class="text"> <p>{{リスト}}</p> <button @click="add">年齢++</button> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ(){ 戻る { リスト:{ 名前: "張三"} } }, メソッド: { 追加(){ if(!this.list.age){ // age属性がない場合は、age属性を追加します this.list.age=18 }それ以外{ this.list.age++ } console.log(このリスト) } } } </スクリプト>
データは確かに追加されていますが、ページは age プロパティをレスポンシブにレンダリングしません。 追加されたデータが応答性があることがわかります。 なぜレスポンシブなのか?よく見ると、this.$set に get age メソッドと set age メソッドが追加されていることがわかります。これがレスポンシブである理由です。 分析するVue のレスポンシブ原則は、JavaScript オブジェクトがデータ オプションとして Vue インスタンスに渡されることです。Vue はこのオブジェクトのすべてのプロパティを走査し、Object.defineProperty を使用してこれらすべてのプロパティをゲッター/セッターに変換します。これらのゲッター/セッターはユーザーには見えませんが、内部的には Vue が依存関係を追跡し、プロパティがアクセスされて変更されたときに変更を通知できるようにします。ここで注意すべき点は、コンソールにデータ オブジェクトを出力するときに、ブラウザーによって getter/setter のフォーマットが異なることです。次の図は公式ドキュメントからの抜粋です。 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Zabbixを使用してOracleテーブルスペースの操作プロセスを監視する
>>: IE6 での PNG アルファ透明度 (完全コレクション)
この記事では、例を使用して、MySQL 派生テーブルの簡単な使用方法を説明します。ご参考までに、詳細...
目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...
Nginx: PV、UV、独立IPウェブサイトを作成する人なら誰でも、ウェブサイトのPV、UV、その...
目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...
この記事では、WeChatミニプログラムで電子署名を実装するための具体的なコードを参考までに紹介しま...
この記事では、よく使用される MySQL 関数について説明します。ご参考までに、詳細は以下の通りです...
序文MySQL に精通している読者は、MySQL が非常に迅速に更新されることに気付くかもしれません...
CSS を使用して 3D フォト ウォールを作成します。具体的なコードは次のとおりです。 <!...
目次01 レプリカセットアーキテクチャ02 MySQL Shellの紹介とインストール03 My...
nginxをインストールするnginx-fullをインストールする必要があることに注意してください。...
1. はじめに行ロックとテーブルロックの違いは面接で頻繁に出てくるはずです。MySQL のロックにつ...
以下は、CentOS 6 または CentOS 7 サーバーのディスク領域をクリアするための簡単なコ...
Baiduの情報は多様すぎて目が回ります。心配しないでください。私はあなたのためにそれを体験しました...
mysqlインストーラコミュニティ8.0.16.0インストールグラフィックチュートリアル、参考までに...
目次序文1. オブジェクト.freeze() 2. オブジェクト.seal() 3. オブジェクト....