vue $setは配列コレクションオブジェクトへの値の割り当てを実装します

vue $setは配列コレクションオブジェクトへの値の割り当てを実装します

Vue $set 配列コレクションオブジェクトの割り当て

Vue カスタム配列オブジェクト コレクションでは、各配列オブジェクトに別の属性と値を追加します。

// データはコレクションオブジェクトを定義します responseData:[
      {'id':'1','name':'婦人服','price':115,'num':1,'pic':'../static/img/1.jpg'},
      {'id':'2','name':'メンズ衣料品','price':110,'num':1,'pic':'../static/img/2.jpg'},
      {'id':'3','name':'子供服','price':118,'num':2,'pic':'../static/img/3.jpg'}
]、
// vue メソッドリクエストはコレクションオブジェクトデータを返します if (res.data.code === 'ok') {
 that.totals = res.data.data.total;
 that.questionList = res.data.data.list;
 
}
// 代入演算 for(let val of that.questionList){
//これが重要なポイントです。$set(val,'discussAnswer','0');
}

Vue this.$set の使用法

変更後に配列やオブジェクトが更新されない問題を解決する

1. this.$set は何をするもので、なぜ使用する必要があるのでしょうか?

オブジェクトにプロパティを追加し、コンソールに出力できるが、ビューでは更新されない場合、 this.$set() メソッドを使用する必要があるかもしれません。簡単に言えば、 this.$set の機能は、この問題を解決することです。

公式の説明: レスポンシブ オブジェクトにプロパティを追加し、新しいプロパティもレスポンシブであり、ビューの更新をトリガーすることを確認します。 Vue は通常の新しいプロパティ (this.myObject.newProperty = 'hi' など) を検出できないため、リアクティブ オブジェクトに新しいプロパティを追加するにはこれを使用する必要があります。

2. 使い方は?

例えば:

1. テンプレートに記述された Vue コード:

<div v-for="(item,index) リスト内" :key="index"
>{{アイテム名}}
</div>
<button @click="changeValue" type="primary">値を変更</button>
</div>

2. デフォルトでデータをエクスポートする{}

データ(){
    戻る {
      リスト:[
        {名前:'29くん',id:1},
        {名前:'299くん',id:2},
      ]
    } 
  }

3. ボタンをクリックしてchangeValueメソッドをトリガーします

マウントされた(){
  this.list[2] = {name:'2999くん',id:3}
  コンソールにログ出力します。
}, 
メソッド: {
  値を変更する(){
    this.$set(this.list,2,{name:'2999kun',id:3})
  }
}

呼び出しメソッド: this.$set( target, key, value )

target : 変更するデータソース(オブジェクトまたは配列)

key : 変更する特定のデータ

値: 再割り当てされたvalue

4. ボタンがクリックされていない場合、インターフェースは次のようになります。インターフェースは表示されませんが、コンソールが印刷されています。

ここに画像の説明を挿入

ここに画像の説明を挿入

5. ボタンをクリックすると、this.$set メソッドが呼び出され、3 番目の属性が正常に表示されます。

ここに画像の説明を挿入

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • vue v-forループでタグ属性に値を割り当てる方法
  • Vueでループオブジェクトのプロパティと属性値を使用する方法
  • Vue ループトラバーサルオプションを実装し、対応するコントロールに割り当てる方法
  • Vueでオブジェクトにループして値を割り当てる方法

<<:  初心者向けMySQLインデックス

>>:  Linux に起動方法を追加する (サービス/スクリプト)

推薦する

Dockerが独自のローカルイメージリポジトリを構築するための手順

1. 環境と準備1. Ubuntu 14.04 2.Docker環境2. 建設プロセス1. ミラーソ...

Vueライフサイクルの詳細な説明

目次ライフサイクルを理解する理由ライフサイクルとはライフサイクルフック関数作成され、マウントされたフ...

幅と高さが可変の要素を中央に配置するための CSS ソリューション

1. 水平中央公開コード: html: <div class="parent&quo...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

VMware Workstationはデバイス/資格情報ガードと互換性がありません

仮想マシンをインストールするときに、「VMware ワークステーションはデバイス/資格情報ガードと互...

Ubuntu で nginx を使用して WebDAV ファイル サーバーを構築する詳細なプロセス

nginxをインストールするnginx-fullをインストールする必要があることに注意してください。...

HTML の blockquote タグの使用と美化

ブロック引用の定義と使用法<blockquote> タグは引用ブロックを定義します。 &...

Windows の MySQL net start mysql MySQL サービスの起動エラーが発生する システムエラーの解決

目次1- エラーの詳細2-シングルソリューション2.1-ディレクトリ C:\Windows\Syst...

React NativeプロジェクトでLottieアニメーションを使用する方法

Lottie は、Airbnb が開発した iOS、Android、React Native 向けの...

ウェブページの幅を携帯電話の画面(ビューポート)の幅に自動的に適応させる実装コード

一般的な書き方は次のとおりです。 XML/HTML コードコンテンツをクリップボードにコピー<...

MySQL 8.0.13 zipパッケージのインストール方法について

MySQL 8.0.13 にはデフォルトでデータ フォルダがあります。このフォルダを削除する必要があ...

ページにスクロールバーが表示されたときに、スクロールバーがページ幅に影響しないようにする方法

本体の幅をウィンドウの幅に設定します(次のスクリプトで制御されます) $("body&qu...

Linux で pyenv をインストールする方法

前提条件gitをインストールする必要があるインストール手順1. リモートリポジトリからpyenvをク...

JavaScript の一般的なステートメント ループ、判定、文字列から数値

目次1. スイッチ2. whileループ3. Do/Whileループ3. 文字列を数値に変換する1....

IE における条件付きコメントの利点と欠点

IE の条件付きコメントは、通常の (X)HTML コメントに対する Microsoft 独自の (...