Vueのメモ:ウォッチ(リスニング属性)

ウォッチ(リスニング属性)

cosnt app = new Vue({
    
    
//...
	watch:{
    
    
		要监听的属性:{
    
    
			handler(新值,旧值){
    
     //... },
			功能属性
		}
	}
})

ハンドラ

  • ハンドラーメソッドは、monitoredプロパティにバインドされています。前に作成されたwatchメソッドは、デフォルトでこのハンドラーを実際に書き込みます。Vue
    はこのロジックを処理し、最終的なコンパイルは実際にはこのハンドラーです。

デフォルト

  • 監視は、最初にバインドされたときには実行されず、監視対象の属性が変更されるまで実行されません

機能属性

immediate:true
  • 監視対象の属性がwacthで宣言されている場合、内部のハンドラーメソッドがすぐに実行され、デフォルトはfalseです。
deep:true

深度监听,默认false
  • 監視対象オブジェクトがオブジェクトの場合、詳細な監視とは、オブジェクト内のすべての要素の変更を監視することです
  • リスナーはレイヤーごとにトラバースし、このリスナーをオブジェクトのすべてのプロパティに追加するため、パフォーマンスのオーバーヘッドが非常に大きくなります。objの属性を変更すると、リスナーのハンドラーがトリガーされます

解決

把某一个要监听的对象元素用字符串包起来
watch:{
    
    
 "对象名称.元素名称":{
    
     //... }
}

時計からログアウト

  • ウォッチがコンポーネント内に記述されていない場合、組み込みのオーバーフローが発生するため、手動でログアウトする必要があります
  • コンポーネントの外側を見る
const 名称 = 组件名称.$watch('监听目标', (新值, 旧值) => {
    
     //。。。 })
unWatch(); // 手动注销

手動でログアウト

  • コンポーネント名。$ watchは、呼び出し後に値を返します。これは、unWatchメソッドです。監視をログオフする場合は、unWatchメソッドを呼び出します。

おすすめ

転載: blog.csdn.net/m0_47883103/article/details/108286816