Heim >Web-Frontend >View.js >So verwenden Sie die Uhr in Vue3
Die Watch-Funktion wird verwendet, um auf Änderungen eines bestimmten Werts zu achten. Wenn sich der Wert ändert, wird die entsprechende Verarbeitungslogik ausgelöst.
<template> <div> <div>{{ count }}</div> <button @click="changCount">更改count的值</button> </div> </template> <script setup> import {ref,reactive, watch} from 'vue' const count = ref(0) function changCount(){ count.value++ } watch(count,(newValue,oldValue)=>{ if(newValue){ console.log(`我侦听到了count状态的变化,当前值为${newValue},从而处理相关逻辑`); } }) </script> <style> </style>
<template> <div> <div>{{ x }}</div> <button @click="changCount">更改count的值</button> </div> </template> <script setup> import { ref, reactive, watch } from "vue"; const x = ref(1); const y = ref(5); function changCount() { x.value++; } watch( () => x.value + y.value, (sum) => { console.log(`我是x与y之和${sum}`); } ); </script> <style> </style>
<template> <div> <div>{{ x }}</div> <button @click="changCount">更改count的值</button> </div> </template> <script setup> import { ref, reactive, watch } from "vue"; const x = ref(1); const y = ref(5); function changCount() { x.value++; } watch( [x,y], ([x,y]) => { console.log(`我是x=>${x},我是y=》${y}`); } ); </script> <style> </style>
<template> <div> <div>{{ obj.name }}</div> <button @click="changObj">更改count的值</button> </div> </template> <script setup> import { ref, reactive, watch } from "vue"; const obj = ref({name:'你好'}) function changObj(){ obj.value.name+='我不好' } watch(()=>obj.value.name,(name)=>{ console.log(name); }) </script> <style> </style>
Gibt an, ob die Methode im Listener nur ausgeführt wird, wenn sich der Wert ändert Wird nach der Initialisierung nach sofortiger einmaliger Aktivierung ausgeführt.
<template> <div> <div>{{ obj.name }}</div> <button @click="changObj">更改count的值</button> </div> </template> <script setup> import { ref, reactive, watch, watchEffect } from "vue"; const obj = ref({name:'你好'}) function changObj(){ obj.value.name+='我不好' } // obj是一个RefImpl对象,当不开启深度监听的时候,监听obj无法检测到obj属性的变化 watch(obj,()=>{ console.log(obj.value.name); }, { deep: true }) </script> <style> </style>
Es ist üblich, dass Listener-Rückrufe genau denselben reaktiven Zustand wie die Quelle verwenden. Zum Beispiel:
<template> <div> <div>{{ obj.name }}</div> <button @click="changObj">更改count的值</button> </div> </template> <script setup> import { ref, reactive, watch, watchEffect } from "vue"; const obj = ref({name:'你好'}) function changObj(){ obj.value.name+='我不好' } // obj是一个RefImpl对象,当不开启深度监听的时候,监听obj无法检测到obj属性的变化 watch(obj,()=>{ console.log(obj.value.name); }, { deep: true,immediate:true }) </script> <style> </style>
<template> <div> <div>{{ obj.name }}</div> <button @click="changObj">更改count的值</button> </div> </template> <script setup> import { ref, reactive, watch, watchEffect } from "vue"; const obj = ref({name:'你好'}) function changObj(){ obj.value.name+='我不好' } watch(obj.value,()=>{ console.log(obj.value.name); }) </script> <style> </style>Hinweis: Es ist zu beachten, dass der watchEffect-Rückruf sofort ausgeführt wird und keine sofortige Angabe erforderlich ist
watchEffect()
6. Sowohl watch als auch watchEffect können reaktionsschnell ausgeführt werden Rückruf zu Nebenwirkungen. Der Hauptunterschied zwischen ihnen besteht in der Art und Weise, wie reaktive Abhängigkeiten verfolgt werden:
Wenn Sie im Listener-Callback auf das von Vue aktualisierte DOM zugreifen möchten, müssen Sie die Option „flush: 'post“ angeben:
<template> <div> <div>{{ obj.name }}</div> <button @click="changObj">更改count的值</button> </div> </template> <script setup> import { ref, reactive, watch, watchEffect } from "vue"; const obj = ref({name:'你好'}) function changObj(){ obj.value.name+='我不好' } // watch(obj.value,()=>{ // console.log(obj.value.name); // }) watchEffect(()=>{ console.log(obj.value.name); }) </script> <style> </style>
Ein wichtiger Punkt ist, dass der Listener mit einer synchronen Anweisung erstellt werden muss: Wenn Sie einen Listener mit einem asynchronen Rückruf erstellen, wird er nicht an die aktuelle Komponente gebunden und Sie müssen ihn manuell stoppen, um Speicherlecks zu verhindern. Als Beispiel unten:
watch(source, callback, { flush: 'post' }) watchEffect(callback, { flush: 'post' })
Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Uhr in Vue3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!