Vueのリスナーとは何か
公式定義: Vue は、watch オプションを通じてデータの変更に応答するためのより一般的な方法を提供します。このアプローチは、データが変更されたときに非同期またはコストのかかる操作を実行する必要がある場合に最も役立ちます。 キーがリッスンするリアクティブ プロパティ (データまたは計算されたプロパティのいずれかを含む) であり、値が対応するコールバック関数であるオブジェクト。値はメソッド名、または追加オプションを含むオブジェクトにすることもできます。コンポーネント インスタンスは、インスタンス化されると $watch() を呼び出します。deep、immediate、flush オプションの詳細については、$watch を参照してください。 リスナーの使い方オプション: タイプ: ウォッチリスナーの構成オプション: デフォルトでは、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 のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: HTML でフォーム コントロールを無効にする 2 つの方法: readonly と disabled
>>: CSS 疑似要素を使用して複数の連続する要素のスタイルを制御する方法
1.テーブル全体を更新します。データ行の列の値が空の場合は、別の列フィールドの値と同じにします。 ...
Vue では、ほとんどの場合、テンプレートを使用して HTML を作成することを推奨しています。ただ...
時刻、文字列、タイムスタンプ間の変換は、日常生活でよく使用されます。よく使用されますが、私は使用する...
Dockerはますます普及しています。環境を軽量かつ柔軟に分離し、容量を拡張し、運用保守管理を容易に...
具体的なコードは次のとおりです。 パッケージ epoint.mppdb_01.h3c; java.i...
1. Windows システムでは、JDK のインストールなど、多くのソフトウェアのインストールで...
1. ツール今必要なツールは2つあります: MySQLサーバー (mysql-5.7.18)、MyS...
この記事では、カレンダー効果を実現するためのBootstrap+Jqueryの具体的なコードを参考ま...
MySQL を使用する場合、日付は通常、datetime や timestamp などの形式で保存さ...
SQL は、データを特定の順序で並べ替え、特定のフィールドでグループ化した後、隣接する 2 つのデ...
次のコマンドを使用してコンテナを作成し、ローカルの /home/dock/Downloads ディレ...
プロジェクトシナリオ: Vueプロジェクトを実行したらインデントエラーが出ました。ideaコンパイラ...
この記事では、テーブルページング機能を実現するためのVueの具体的なコードを例として紹介します。具体...
WeChat ミニプログラムのネイティブ コンポーネントであるカメラ、キャンバス、入力 (フォーカス...
VM Ware 仮想マシン CentOS の時刻は、次の図に示すように、現地時間と一致しません。おそ...