VUEウォッチリスナーの基本的な使い方の詳しい説明

VUEウォッチリスナーの基本的な使い方の詳しい説明

リスナーは通常、データの変更を監視するために使用され、デフォルトではデータが変更されたときに実行されます。

監視対象データの名前が関数名としてここに入力されます。この関数には 2 つのパラメータがあり、1 つは新しい値で、もう 1 つは古い値です。

Vue では、データの変更に応答するために watch が使用されます。watch の使用方法は大きく分けて 3 つあります。

1. 次のコードはwatchの簡単な使用法です

<div id="アプリ">
    <input type="text" v-model="firstName" />
</div>
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <スクリプト>
var vm = 新しい Vue({
    el:"#アプリ",
    データ:{
        firstName:"张"
    },
    時計:{         
        firstName:(新しい値、古い値){
//firstNameは監視したいデータの名前です。v-modelのfirstNameを監視するなど、監視したい関数名を使用します。                    
//newVal: 変更後の値、つまり最初のパラメータを示します。位置を入れ替えないでください。//oldVal: 変更前の値を示します。
            console.log({newVal,oldVal}); // {newVal: "陈", oldVal: "张"}
        }
        // 監視関数を直接記述し、cityName 値が変更されるたびに関数を実行します。
        // 監視データの直後に文字列形式でメソッド名を追加することもできます: firstName: 'nameChange'
    },
    方法:{
        名前変更(){
         }
    }
})
 vm.firstName = "陈"; // 監視対象の値を変更する</script>

2. 即時監視

watch の基本的な使い方では、値が初めてバインドされるときにはリスニング関数は実行されず、値が変更されたときにのみ実行されるという特徴があります。値が最初にバインドされたときに関数を実行する必要がある場合は、immediate 属性を使用する必要があります。

時計:
  ファーストネーム: {
    ハンドラ(新しい名前、古い名前) {
      this.fullName = newName + ' ' + this.lastName;
    },
    { 即時: true }
  }
}

監視対象データは、ハンドラメソッドと即時処理を含めてオブジェクト形式で記述されます。上記の簡単な記述で記述した関数は、実際にはこのハンドラメソッドを記述しており、デフォルトでは省略されています。

3. ハンドラメソッド

<div id="アプリ">
    <div>
        <p>番号: {{ myNumber }}</p>
        <p>数値: <input type="text" v-model.number="myNumber"></p>
    </div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<スクリプト>
新しいVue({
    el: '#app',
    データ: {
        myNumber: 'Dawei'
    },
    時計:
        私の番号: {
            ハンドラ(newVal, oldVal) {
                コンソールにログ出力します。
                コンソールにログ出力します。
            },
            //immediate が true の場合、コールバック関数はすぐにトリガーされます。false の場合、上記の例と同様に、コールバックはすぐには実行されません。
            即時: 真
          }
      }
 })
</スクリプト>
//ハンドラメソッドはウォッチで実行する必要がある特定のメソッドです

4. 深い属性

オブジェクトやプロパティをどのように監視するのでしょうか?それではdeep属性を紹介しましょう。その役割がこの問題を解決する鍵となります。

 <div id="ルート">
    <p>obj.a: {{obj.a}}</p>
    <p>obj.a: <input type="text" v-model="obj.a"></p>
</div> 
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <スクリプト>
    新しいVue({
        el: '#root',
        データ: {
            オブジェクト: {
                 123 です
            }
        },
        時計:
            オブジェクト: {
            ハンドラ(新しい名前、古い名前) {
                console.log(新しい名前、古い名前);
            },
            即時: true、
            深い:本当
            }
        } 
})
</スクリプト>

上記のコードは deep:true を付けて追加しないとコンソールでは実行されません。初回のみ実行され、出力結果は未定義になります。

デフォルトでは、ハンドラーは obj プロパティの参照の変更のみを監視します。obj に値を割り当てたときのみ監視します。

このとき、ディープ オブザベーションを使用できます。リスナーはレイヤーごとに下に移動し、このリスナーをオブジェクトのすべてのプロパティに追加しますが、これには時間がかかりすぎます。

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueウォッチでメソッドを呼び出す際の落とし穴を解決する
  • Vueウォッチの監視方法の概要
  • vue での監視データの変更と監視の各属性の詳細な説明
  • Vue でのウォッチ リスナーのタイミングのトリガー (ウォッチの落とし穴と解決策)

<<:  CSS3はトランジション効果を実現するためにtransitionプロパティを使用する。

>>:  docker で PostgreSQL データベースをインストールして永続化する方法

推薦する

HTML テーブルのオーバーフローの解決方法

テーブルが広い場合は、あふれてしまう可能性があります。たとえば、左と右の 2 つの div がありま...

Windows システムに mysql5.7.21 をインストールするための詳細なチュートリアル

MySQL インストーラーは、MySQL ソフトウェアのあらゆるニーズに対応する、使いやすいウィザー...

Linux システムにおける時間設定の概要

1. 時間の種類は次のように分けられます。 1. ネットワーク時間(タイムゾーンの設定、ntpサーバ...

xshellリモート接続の自動切断の問題の解決方法の詳細な説明

xshell を使用したリモート接続システムの自動切断の問題の解決策: 1. サーバー構成サーバーは...

DockerコンテナのIPアドレスを取得する方法の詳細な説明

1.コンテナに入った後 /etc/hosts を cat するコンテナ自体の IP アドレスと (-...

SQL ストアド プロシージャの取得、データ取得、プロセス分析

この記事は主に、SQL のストアド プロシージャから返されたデータを取得するプロセスの分析を紹介しま...

Docker で最初のアプリケーションをデプロイする方法

前回の記事では、Docker Desktop をインストールし、Kubernetes を有効にしまし...

SQL実行ステップの詳細な分析

SQL実行ステップの詳細な分析まず、ステートメントが実行される順序を見てみましょう。 (8)選択する...

Ubuntu で .sh ファイルを実行するいくつかの方法の違いについて簡単に説明します。

序文特に bash 環境では、スクリプトの実行方法によって結果が異なります。スクリプトを実行する方法...

Redission-tomcatは、単一マシンから複数マシンへの展開を迅速に実装します。

序文一部のプロジェクトの初期段階では、シンプルさとスピードのために、開発と展開は単一のマシンで行われ...

MySQLインデックスの簡単な分析

データベース インデックスは、テーブル操作の速度を向上させることを目的としたデータ構造です。高速なラ...

Docker は固定コンテナ IP アドレスを実現するためにカスタム ネットワークを作成します。

デフォルトのブリッジ ネットワークのため、コンテナーを再起動すると IP アドレスが変更されます。シ...

CSS3 テキストアニメーション効果

効果 html <div class="sp-container">...

Vueを使い始める際に習得する必要がある知識について簡単に説明します

最も人気のあるフロントエンド フレームワークの 1 つとして、Vue は多くのフロントエンド開発エン...

ランダムロールコールテーブルを実装するためのネイティブJavaScript

この記事では、JavaScriptのランダムロールコールテーブルの具体的なコードを参考までに紹介しま...