Vue の基本リスナーの詳細な説明

Vue の基本リスナーの詳細な説明

Vueのリスナーとは何か

  • 開発中、data によって返されるオブジェクトにデータを定義し、このデータを補間構文やその他の方法を通じてテンプレートにバインドできます。
  • データが変更されると、テンプレートにバインドされたデータが自動的に更新され、最新のデータが表示されます。ただし、この変更はテンプレート内のデータ値によって自動的に監視されます。
  • 場合によっては、コードロジック内の特定のデータの変更を監視したい場合、リスナーウォッチを使用する必要があります。

公式定義: Vue は、watch オプションを通じてデータの変更に応答するためのより一般的な方法を提供します。このアプローチは、データが変更されたときに非同期またはコストのかかる操作を実行する必要がある場合に最も役立ちます。

キーがリッスンするリアクティブ プロパティ (データまたは計算されたプロパティのいずれかを含む) であり、値が対応するコールバック関数であるオブジェクト。値はメソッド名、または追加オプションを含むオブジェクトにすることもできます。コンポーネント インスタンスは、インスタンス化されると $watch() を呼び出します。deep、immediate、flush オプションの詳細については、$watch を参照してください。

リスナーの使い方

オプション: watch

タイプ: { [key: string]: string | Function | Object | Array}

ウォッチリスナーの構成オプション:

デフォルトでは、watch はデータ参照の変更のみを監視し、データの内部プロパティの変更には応答しません。

このとき、deep オプションを使用してより深くリッスンすることができます。もう 1 つの特性は、最初にすぐに実行することを望んでいることです。このとき、immediate オプションを使用します。このとき、後でデータが変更されるかどうかに関係なく、リスニング関数は 1 回実行されます。

データの内容:

データ() {
    戻る {
        情報:
            名前: 'cgj'
        }
    }
}
時計:
    情報:
        ハンドラ(新しい値、古い値) {
            console.log(新しい値、古い値)    
        }
        深い:本当、
        即時: true、
    }
}

Vue3 のドキュメントには記載されていないが、Vue2 のドキュメントには記載されているもう 1 つのことは、リスニング オブジェクトのプロパティです。

'info.name': 関数(新しい値、古い値) {
    console.log(新しい値、古い値)
}

別の方法は、$watch API を使用することです。

$watch の詳細については、公式 API (あまり使用されていない) を参照してください: サンプル メソッド | Vue.js

const app = createApp({
  データ() {
    戻る {
      a: 1、
      b: 2,
      c: {
        d: 4
      },
      e: 5,
      女性: 6
    }
  },
  時計:
    // トップレベルのプロパティをリッスンする
    a(val, 古いVal) {
      console.log(`新しい: ${val}、古い: ${oldVal}`)
    },
    // 文字列メソッド名 b: 'someMethod',
    // このコールバックは、監視対象オブジェクトのプロパティが変更されたときに呼び出されます。ネストがどれだけ深くてもかまいません。c: {
      ハンドラ(val, oldVal) {
        console.log('c が変更されました')
      },
      深い: 本当
    },
    // ネストされた単一のプロパティをリッスンする
    'c.d': 関数 (val, oldVal) {
      // 何かをする
    },
    // このコールバックはリスニング開始直後に呼び出されます e: {
      ハンドラ(val, oldVal) {
        console.log('変更されました')
      },
      即時: 真
    },
    // コールバックの配列を渡すと、1つずつ呼び出されます f: [
      'ハンドル1',
      関数handle2(val, oldVal) {
        console.log('handle2がトリガーされました')
      },
      {
        ハンドラ: 関数 handle3(val, oldVal) {
          console.log('handle3がトリガーされました')
        }
        /* ... */
      }
    ]
  },
  メソッド: {
    いくつかのメソッド() {
      console.log('bが変更されました')
    },
    ハンドル1() {
      console.log('ハンドル1がトリガーされました')
    }
  }
})
定数 vm = app.mount('#app')
vm.a = 3 // => 新: 3、旧: 1

vue リスナーウォッチ

目標: データ/計算されたプロパティ値の変更を監視できる

文法:

時計:
    「監視されているプロパティの名前」(newVal、oldVal){
    }
}

コード例:

<テンプレート>
  <div>
    <input type="text" v-model="名前">
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  データ(){
    戻る {
      名前: ""
    }
  },
  // 目標: 名前の値の変更をリッスンする/*
  文法:
    時計:
      変数名(newVal, oldVal){
        // ここで値に対応する変数名が自動的に変更されます}
    }
  */
  時計:
    // newVal: 現在の値 // oldVal: 以前の値 name(newVal, oldVal){
      コンソールにログ出力します。
    }
  }
}
</スクリプト>
<スタイル>
</スタイル>

要約: プロパティの変更を監視するには、watchメソッドを使用します

Vue リスナー - ディープリスニングと即時実行

目標: データ/計算されたプロパティ値の変更を監視できる

文法:

時計:
    「監視されているプロパティの名前」(newVal、oldVal){
    }
}

コード例:

<テンプレート>
  <div>
    <input type="text" v-model="ユーザー名">
    <input type="text" v-model="ユーザー年齢">
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  データ(){
    戻る {
      ユーザー: {
        名前: ""、
        年齢: 0
      }
    }
  },
  // ターゲット: リスニングオブジェクト/*
  文法:
    時計:
      変数名(newVal, oldVal){
        // ここで値に対応する変数名が自動的に変更されます},
      変数名: {
        ハンドラ(newVal, oldVal){
        },
        deep: true, // ディープリスニング(オブジェクトの内部レイヤーで値が変化します)
        immediate: true // すぐにリッスンします (Web ページが開かれたときにハンドラが 1 回実行されます)
      }
    }
  */
  時計:
    ユーザー: {
      ハンドラ(newVal, oldVal){
        //userconsole.log 内のオブジェクト(newVal, oldVal);
      },
      深い:本当、
      即時: 真
    }
  }
}
</スクリプト>
<スタイル>
</スタイル>

要約: 即時リスニング、ディープリスニング、ハンドラー固定メソッドのトリガー

要約する

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

以下もご興味があるかもしれません:
  • vue3.0 のウォッチ リスナーの例の詳細な説明
  • Vue2 と Vue3 でウォッチ リスナーを使用する方法
  • Vue のリスナーの基本的な使用例
  • Vue の計算プロパティとリスナーの使用の概要
  • vueリスナーウォッチでこれを呼び出すときに未定義の問題を解決する
  • Vue 学習ノート: 計算プロパティとリスナーの使用
  • Vue 2.0 リスナーウォッチ属性コードの詳細な説明

<<:  HTML でフォーム コントロールを無効にする 2 つの方法: readonly と disabled

>>:  CSS 疑似要素を使用して複数の連続する要素のスタイルを制御する方法

推薦する

Vueはプルダウンとスクロールでデータを読み込む例を実装しています

目次ステップ1: インストールステップ2: 引用ステップ3: 使用Webプロジェクトでは、データを読...

JavaScript における var と let の違い

目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...

React Native JSIはRNとネイティブ通信のサンプルコードを実装します

目次JSIとはJSIの違いiOS で JSI を使用するiOS 設定RN側の構成jsはパラメータ付き...

Vueプロジェクトでスケルトンスクリーンを使用する方法

現在、アプリケーション開発は基本的にフロントエンドとバックエンドに分離されています。主流のフロントエ...

Windows 7 の mysql6.x で中国語の文字化けが発生する問題に対する完璧な解決策

1. コマンドラインでMySQLサービスを停止します: net stop mysql stop my...

反応ループデータの実装(リスト)

まず、バックグラウンドから来るデータをシミュレートしてみましょう。ここでは、コードをわかりやすくする...

MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装

実験環境: 1. CentOS 7 サーバー 3 台2. mysql5.7.26 (3台のマシンはす...

ドロップダウンリストのJavaScript実装

この記事の例では、ドロップダウンリストを実装するためのJavaScriptの具体的なコードを参考まで...

CSSにスティッキー効果を追加する方法

前面に書かれたfilter:blur と filter:contrast がこのような素晴らしい化学...

jQueryアニメーションを理解するのに役立つ記事

目次1. 要素の表示と非表示を制御する show() hide() 2. 要素の透明度を制御する f...

JavaScript における変数と関数の昇格の詳細な例

js 実行字句解析フェーズ: 形式パラメータ解析、変数宣言解析、関数宣言解析の 3 つの部分が含まれ...

H5ゲームをnginxサーバーにデプロイする方法の詳細な説明

自己学習型ゲーム開発の道において、最も充実した瞬間は、自分でミニゲームを作り、友達と共有して試しにプ...

JavaScript の Set データ構造の詳細な説明

目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...

Windows 7 で Python 3.4 を使って MySQL データベースを使用する

Python 3.4でMySQLデータベースを使用する詳細なプロセスは次のとおりです。 Window...

MYSQL の COLLATE とは何ですか?

序文MySQL で show create table <tablename> コマンド...