Vue が配列の変更を監視できない問題の解決方法

Vue が配列の変更を監視できない問題の解決方法

1. Vueリスナー配列

Vueは実際に配列の変更を監視することができます。例えば、

データ () {
  戻る {
    ウォッチArr: [],
  };
},
watchArr (新しい値) {
  console.log('リスニング: ' + newVal);
},
作成された(){
  タイムアウトを設定する(() => {
    this.watchArr = [1, 2, 3];
  }, 1000);
},

たとえば、配列インデックス 0 から 2 つの要素を削除し、インデックス 0 に要素 3 を挿入するには、splice(0,2,3) を使用します。

データ () {
  戻る {
    ウォッチアラー: [1, 2, 3],
  };
},
watchArr (新しい値) {
  console.log('リスニング: ' + newVal);
},
作成された(){
  タイムアウトを設定する(() => {
    this.watchArr.splice(0, 2, 3);
  }, 1000);
},

プッシュ配列も監視できます。

2. vueが配列の変更を監視できない状況

ただし、次の2つの状況ではアレイを監視できません。

  • インデックスを使用して配列項目を直接設定する場合、たとえば、arr[indexofitem]=newValue
  • 配列の長さを変更する場合、例えば、arr.length = newLength

配列の変更を監視できない状況の例

1. インデックスを使用して配列の値を直接変更する

データ () {
  戻る {
    ウォッチArr: [{
      名前: 'krry',
    }],
  };
},
watchArr (新しい値) {
  console.log('リスニング: ' + newVal);
},
作成された(){
  タイムアウトを設定する(() => {
    this.watchArr[0].name = 'シャオユエ';
  }, 1000);
},

2. 配列の長さを変更する

  • 長さが元の配列より大きい場合、後続の要素は未定義に設定されます。
  • 長さが元の配列より短い場合、余分な要素は切り捨てられます。
データ () {
  戻る {
    ウォッチArr: [{
      名前: 'krry',
    }],
  };
},
ウォッチArr (新しい値) {
  console.log('リスニング: ' + newVal);
},
作成された(){
  タイムアウトを設定する(() => {
    this.watchArr.length = 5;
  }, 1000);
},

Vue が配列の変更を監視できないことに関するこの記事はこれで終わりです。Vue が配列の変更を監視できないことに関する関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueの監視プロパティの詳細
  • VUEウォッチリスナーの基本的な使い方の詳しい説明
  • Vue がルート変更を監視するときに watch メソッドが複数回実行される理由と解決策
  • オブジェクトのプロパティ監視に関する Vue ウォッチ
  • Vueウォッチの監視方法の概要

<<:  CentOS8でのDockerの使い方の詳しい説明

>>:  大きなオフセットによる MySQL 制限ページングが遅い理由と最適化ソリューション

推薦する

WeChat アプレットのシンプルなログイン ページの実装 (ソース コード付き)

目次1. 上の写真2. ユーザーが存在しない3. コードをアップロードする1. 上の写真 2. ユー...

単一/複数行テキストを含む div を垂直方向に中央揃えする N 通りの方法 (高さ不明/高さ固定)

この問題について話すとき、垂直方向の中央揃えを設定するための vertical-align 属性が ...

シンプルなウェブページレイアウトの構造と表現原理の共有

構造とパフォーマンスの紹介HTML 構造、CSS 表現、JavaScript 動作。Web ページの...

流れと動的なライン効果を実現する純粋なCSSコード

アイデア:外側のボックスは背景を設定し、内側のボックスは背景の幅と高さを設定し、ボックスを動かすアニ...

MySQLデータを復元する2つの方法

1. はじめに少し前、開発者がテスト環境や本番環境で誤った操作をし、データベースを誤って削除/更新し...

docker run によって起動されたコンテナがハングしてデータが失われた場合の対処方法

シナリオの説明あるシステムでは、機能サービスはdocker stack deploy xxxで起動し...

vuex で履歴を実装するためのサンプルコード

私は最近、ユーザー操作を元に戻す、またはやり直す機能を備えたビジュアル操作プラットフォームを開発して...

Linux カーネル デバイス ドライバー システム コールに関する注意事項

/**************************** * システムコール**********...

HTML の順序付きリスト、順序なしリスト、定義リストに関する簡単な説明

順序付きリストXML/HTML コードコンテンツをクリップボードにコピー<オルタイプ= &qu...

VMwareがLinuxシステムをインストールして起動した後に黒い画面が表示される問題を解決する

1. 設置環境1. HUAWEI mate x CPU i5 82500u、8g メモリ、独立グラフ...

HTML 基本構造_Powernode Java アカデミー

多くの場合、Web ページ開発を学ぶときに最初に印象に残るのは、html または htm サフィック...

MySQL データベースの集計クエリと結合クエリ操作

目次1. クエリ結果を挿入する2. 集計クエリ2.1 はじめに2.2 集計関数2.3 group b...

仮想マシンに Windows Server 2008 オペレーティング システムをインストールする

この記事では、Windows Server オペレーティング システムのインストールと企業でのそのア...

JavaScriptはスタック構造の詳細なプロセスを実装する

目次1. スタック構造を理解する2. スタック構造のカプセル化3. 10進数を2進数に変換する1. ...