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 疑似要素を使用して複数の連続する要素のスタイルを制御する方法
目次基本的な概要GTIDをオンラインで有効にする1. GTID検証ENFORCE_GTID_CONS...
目次ロックの概要ロックの分類データベース操作の粒度データ操作の種類MySQL ロックさまざまなストレ...
1. Dockerのインストールと起動 yum で epel-release をインストールします ...
選択ドロップダウン リスト フォームは誰もがよく知っているかもしれませんが、デフォルトのドロップダウ...
序文WeChat ミニプログラムのネイティブ UI が少し物足りないと感じることがあるので、サードパ...
目次仮想DOM仮想DOMとは何か仮想DOMの役割Vue の仮想 DOM vノードvNodeとはvNo...
この記事では、CSS無限シームレススクロール効果を実現するためのvue3の具体的なコードを参考までに...
相対的な長さの単位それら説明: 相対的な長さの単位。現在のオブジェクト内のテキストのフォント サイズ...
目次1. JavaScriptはシングルスレッドです1. 同期タスク2. 非同期タスク2. タスクキ...
コード知識ポイント1. fullpage.jsを組み合わせてフルスクリーンスクロールを実現する2. ...
仮想DOMの役割まず、仮想 DOM の出現によってどのような問題が解決されるのかを知る必要があります...
目次1. ルーティング構成2. Vueページのネスト3. ネストされた関係1. ルーティング構成 定...
まず、Alibaba Cloud の公式チュートリアルをご覧ください。ファイルの説明: 1. 証明書...
01. コマンドの概要Linux には充実したヘルプ マニュアルが用意されています。コマンドのパラメ...
十分に最適化されていない、またはパフォーマンスが極端に低い SQL ステートメントに直面した場合、通...