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

推薦する

HTML 要素 noscript の使用の紹介

noscript の定義と使用法noscript 要素は、スクリプトが実行されない場合の代替コンテン...

Docker ネットワークの原理とカスタム ネットワークの詳細な分析

Docker はホストマシン上のブリッジを仮想化します。コンテナを作成して起動すると、各コンテナには...

CSS クラスと ID の一般的な命名規則

ページの公開名: #wrapper - ページの外側の端が全体のレイアウト幅を制御します#conta...

Vue3.0 + TypeScript + Vite初体験の詳しい説明

目次プロジェクトの作成プロジェクト構造メイン.jsアプリ.vue:設定コンポジションAPI参照反応的...

ウェブデザインのグラフィック構成と組版機能の紹介

すべてには基礎が必要です。家を建てるには基礎が必要です。方程式を解くには、まず九九を覚える必要があり...

CSS3 Flex エラスティックレイアウトのサンプルコードの詳細な説明

1. 基本概念 //任意のコンテナを Flex レイアウトとして指定できます。 。箱{ ディスプレイ...

JavaScript 高度なカスタム例外

目次1. コンセプト1.1 エラーと例外とは何ですか? 1.2 異常の分類2. 例外処理2.1try...

Docker に Tomcat をインストールし、Springboot プロジェクトの WAR パッケージをデプロイする方法

簡単です。チュートリアルを見てください。ブロガー1. まずdockerを起動するサービスdocker...

64 ビット CentOs7 ソース コードのインストール mysql-5.6.35 プロセス共有

インストールプロセス中に問題が発生しないように、まず依存パッケージをインストールします。 [root...

MySQLイベント計画タスクに関する簡単な説明

1. イベントが有効になっているかどうかを確認する'%sche%' のような変数を表...

この記事ではCSSの組み合わせセレクターの使い方を説明します

CSS 組み合わせセレクターには、単純なセレクターのさまざまな組み合わせが含まれます。 CSS3 に...

Mysql 5.7.17 をインストールした後、MySQL にログインするチュートリアル

mysql-5.7.17 のインストールについては記事の下部で紹介されているので、参考にしてください...

MySQL 8.0.18 のインストールと設定のグラフィックチュートリアル

学習目標: Windowsシステムを使用してMySQLデータベースをインストールする方法を学びます。...

mysql の find_in_set 関数の基本的な使い方

序文これは私が最近見つけた新しい機能です。プロジェクトでの私の使用シナリオは次のとおりです。アプリケ...

Dockerイメージを素早くデプロイして実行する最新のIDEAプロセスの詳細な説明

背景docker とアイデアを使用して、Java Web の開発、展開、運用までのプロセス全体を実現...