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 データベースをインストールして永続化する方法

推薦する

Vue3.0 で Vuex 状態管理を開始する方法をすぐに習得します

Vuex は、Vue.js アプリケーション専用に開発された状態管理パターンです。集中型ストレージを...

MySQLのトランザクション特性とレベル原則の分析

1. トランザクションとは何ですか?データベース トランザクション (略称: トランザクション) は...

メタ宣言注釈の手順

メタ宣言注釈の手順: 1. モバイル ページと 1 対 1 で対応するすべての PC ページを分類し...

Vueはキャンバスを使用して画像圧縮アップロードを実現します

この記事では、キャンバスを使用して画像圧縮アップロードを実現するVueの具体的なコードを参考までに共...

MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

この記事では、MySQL 最適化のヒントで重複したエントリを削除する方法を例を使って説明します。ご参...

HTML ページでギリシャ文字を使用する方法

ギリシャ文字は、特に数学や物理学などの科学技術分野で非常によく使用される記号列であり、特定の意味を持...

nginx で第 3 レベルドメイン名を設定する方法の例

問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...

MySQL 外部キー制約 (FOREIGN KEY) ケースの説明

MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約...

Ubuntu仮想マシンでシリアル通信にcutecomを使用する方法

Ubuntu仮想マシンでのシリアル通信にcutecomを使用する1. cutecomをインストールす...

CN2、GIA、CIA、BGP、IPLC はどういう意味ですか?

CN2ラインとは何ですか? CN2 は、China Telecom Next Carrier Ne...

現在のMySQL接続数を表示する方法の詳細な説明

1. 現在のすべての接続の詳細情報を表示します。 ./mysqladmin -uadmin -p -...

Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...

Nginx/Httpd ロードバランシング Tomcat 設定チュートリアル

前回のブログでは、Nginx と httpd を使用して、逆生成用のバックエンド Tomcat サー...