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: インストールステップ2: 引用ステップ3: 使用Webプロジェクトでは、データを読...
目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...
目次JSIとはJSIの違いiOS で JSI を使用するiOS 設定RN側の構成jsはパラメータ付き...
現在、アプリケーション開発は基本的にフロントエンドとバックエンドに分離されています。主流のフロントエ...
1. コマンドラインでMySQLサービスを停止します: net stop mysql stop my...
まず、バックグラウンドから来るデータをシミュレートしてみましょう。ここでは、コードをわかりやすくする...
実験環境: 1. CentOS 7 サーバー 3 台2. mysql5.7.26 (3台のマシンはす...
この記事の例では、ドロップダウンリストを実装するためのJavaScriptの具体的なコードを参考まで...
前面に書かれたfilter:blur と filter:contrast がこのような素晴らしい化学...
目次1. 要素の表示と非表示を制御する show() hide() 2. 要素の透明度を制御する f...
js 実行字句解析フェーズ: 形式パラメータ解析、変数宣言解析、関数宣言解析の 3 つの部分が含まれ...
自己学習型ゲーム開発の道において、最も充実した瞬間は、自分でミニゲームを作り、友達と共有して試しにプ...
目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...
Python 3.4でMySQLデータベースを使用する詳細なプロセスは次のとおりです。 Window...
序文MySQL で show create table <tablename> コマンド...