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

推薦する

Linux の grep コマンドと egrep コマンドの詳細な説明

反復/egrep構文: grep [-cinvABC] 'word' ファイル名-c...

JavaScript ステートメントの一般的な for ループの詳細な説明

JavaScript には、for、for in、for of、forEach ループなど、多くのル...

MySQL の general_log ログの知識ポイントの紹介

以下の操作デモンストレーションはすべて MySQL バージョン 5.6.36 に基づいています。仕事...

Windows 2019 アクティベーション チュートリアル (Office2019)

数日前、Server2019の正式版がリリースされたことを知り、面白半分でインストールしてみることに...

純粋な CSS を使用してドロップダウン メニューを作成するサンプル コード

導入:最近の面接の質問を見ると、ドロップダウン メニューを実装するために CSS を使用することが多...

JavaScript コンソールのその他の機能

目次概要コンソールログコンソール.infoコンソール.警告コンソールエラーコンソールテーブルコンソー...

CSS ファイルをインポートする 4 つの方法 (インライン、インライン、外部、インポート) の詳細な説明

CSS インポート方法 - インラインスタイルタグ属性を通じて、CSSのキーと値のペアがタグに直接書...

Linux システムでデプロイメント プロジェクトを設定する方法

1. ファイアウォールの設定を変更し、対応するポートを開きますLinux システムのファイアウォール...

jQueryのコア機能とイベント処理の詳細な説明

目次イベントページの読み込みイベント委任イベントの切り替えイベント要約するイベントページの読み込み1...

ReactのuseEffectクロージャの落とし穴についての簡単な説明

問題コードuseEffectによって発生したクロージャの問題コードを見てみましょう 定数 btn =...

HTML の 2 つのタブ ナビゲーション間の競合の解決方法

まず問題の説明から始めましょう:同じページで、1 つのタブに float:left が必要で、もう ...

JavaScriptはeコマースプラットフォームの製品詳細を実装します

この記事では、電子商取引プラットフォームで商品の詳細を表示する一般的な例を紹介します。たとえば、ある...

MySql 8.0.11 のインストール プロセスと Navicat とのリンク時に発生する問題の概要

私のシステムとソフトウェアのバージョンは次のとおりです。システム環境: win7、64ビットMySQ...

iframe を使用して Web ページに他の Web ページを埋め込む方法

iframe の使い方:コードをコピーコードは次のとおりです。 <DIV align=cent...