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 制限ページングが遅い理由と最適化ソリューション

推薦する

インデックスは MySQL クエリ条件で使用されますか?

雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...

JavaScript で外部変数にアクセスするサブ関数の 3 つのソリューション

序文Web ページを作成するときに、次のような状況に遭遇することはよくあります。 <本文>...

js 配列エントリ() 反復メソッドを取得する

目次1.entires() メソッドの詳細な構文2.entires() メソッドの一般的な使用法と注...

JavaScript オブジェクトからプリミティブ値への変換の詳細な説明

目次オブジェクトプロトタイプの値()オブジェクトプロトタイプtoString()シンボル.toPri...

mysql zipファイルのインストールチュートリアル

この記事では、参考までにMySQL zipファイルをインストールする具体的な方法を紹介します。具体的...

Nginx 構成 クロスドメイン リクエスト Access-Control-Allow-Origin * 詳細な説明

序文403 クロスオリジン エラーが発生しNo 'Access-Control-Allow-...

MySQL LOAD_FILE() 関数メソッドの概要

MySQL では、LOAD_FILE() 関数はファイルを読み取り、その内容を文字列として返します。...

MySQLのタイムゾーンを表示および設定する方法

1. データベースのタイムゾーンを確認する '%time_zone' のような変数を...

MySQLストレージフィールドタイプのクエリ効率についての簡単な理解

検索パフォーマンスは最速から最遅まで次のとおりです (私が聞いたところによると)。 1 番目: ti...

MySQLデータ移行方法とツールの分析

この記事は主にMySQLデータ移行方法とツールの分析を紹介します。サンプルコードを通じて詳細に紹介さ...

vuexの強制リフレッシュによるデータ損失問題の分析

vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...

JavaScript インスタンス オブジェクトでプロトタイプ メソッドをオーバーライドする方法の詳細

目次JavaScriptでは、通常、次のコードのようにクラスを簡単に定義できます。 var サンプル...

CSS ワールド - コード実践: 画像の Alt 情報の表示

ただし、デフォルトの src を持つ <img> 要素を使用してスクロール読み込み効果を...

MySQL でインデックス構造として B+ ツリーを使用する利点は何ですか?

序文MySQL では、Innodb と MyIsam の両方がインデックス構造として B+ ツリーを...

ウェブページの再設計の7つの主要要素 ウェブページの再設計の7つの主要要素を共有する

Shopify Plus は、私たちが設立した e コマース プラットフォームのエンタープライズ バ...