其他分享
首页 > 其他分享> > VUE3使用watch监测数据变化

VUE3使用watch监测数据变化

作者:互联网

 1 // 不要忘了导入要用的 API
 2 import { defineComponent, reactive, watch } from 'vue'
 3 
 4 export default defineComponent({
 5   setup() {
 6     // 定义一个响应式数据
 7     const userInfo = reactive({
 8       name: 'Petter',
 9       age: 18,
10     })
11 
12     // 2s后改变数据
13     setTimeout(() => {
14       userInfo.name = 'Tom'
15     }, 2000)
16 
17     /**
18      * 可以直接监听这个响应式对象
19      * callback 的参数如果不用可以不写
20      */
21     watch(userInfo, () => {
22       console.log('监听整个 userInfo ', userInfo.name)
23     })
24 
25     /**
26      * 也可以监听对象里面的某个值
27      * 此时数据源需要写成 getter 函数
28      */
29     watch(
30       // 数据源,getter 形式
31       () => userInfo.name,
32       // 回调函数 callback
33       (newValue, oldValue) => {
34         console.log('只监听 name 的变化 ', userInfo.name)
35         console.log('打印变化前后的值', { oldValue, newValue })
36       }
37     )
38   },
39 })

 

批量监测

 

 1 import { defineComponent, ref, watch } from 'vue'
 2 
 3 export default defineComponent({
 4   setup() {
 5     // 定义多个数据源
 6     const message = ref<string>('')
 7     const index = ref<number>(0)
 8 
 9     // 2s后改变数据
10     setTimeout(() => {
11       message.value = 'Hello World!'
12       index.value++
13     }, 2000)
14 
15     watch(
16       // 数据源改成了数组
17       [message, index],
18       // 回调的入参也变成了数组,每个数组里面的顺序和数据源数组排序一致
19       ([newMessage, newIndex], [oldMessage, oldIndex]) => {
20         console.log('message 的变化', { newMessage, oldMessage })
21         console.log('index 的变化', { newIndex, oldIndex })
22       }
23     )
24   },
25 })

 

来自于: https://vue3.chengpeiquan.com/component.html#基础用法

 

标签:监测数据,console,name,数据源,watch,userInfo,VUE3,log
来源: https://www.cnblogs.com/googlegis/p/16460179.html