您的位置:首页 > 财经 > 产业 > Vue3数据监听watch

Vue3数据监听watch

2024/10/5 22:21:31 来源:https://blog.csdn.net/weixin_74261199/article/details/142327279  浏览:    关键词:Vue3数据监听watch

        有时候希望某个数据发生变化时,能够得到监视并处理,这时用watch函数最合适不过

watch函数定义

函数声明:watch(monitorData, handlerFunction, config)

  • monitorData要监听的数据
  • handlerFunction监听数据处理函数,这个函数第一个参数监听数据的旧值,第二个参数监听数据的新值
  • config配置对象,设置deep为true开启深度监听,immediate为true立刻执行一次

数据监听

定义如下的数据模型,clazz代表班级,student代表学生

const clazz = ref('')
const clazz2 = ref('')
const student = ref({name: '222',age: ''
})

以下情况全是使用ref()函数的情况

1)监视基本数据类型

① 直接监听

watch(clazz, (newValue, oldValue) => {console.log('班级','新值:', newValue, '旧值:', oldValue)
})

② 通过函数监听,需要通过.value属性监听

watch(() => clazz.value, (newValue, oldValue) => {console.log('班级','新值:', newValue, '旧值:', oldValue)
})

2)监听对象本身变化(浅监听,不是监听对象属性)

① 直接监听

watch(student,  (newValue, oldValue) => {console.log('学生信息','新值:', newValue, '旧值:', oldValue)
})

② 通过函数监听,通过.value属性

watch(() => student.value,  (newValue, oldValue) => {console.log('学生信息','新值:', newValue, '旧值:', oldValue)
})

3)监听对象属性

① 单独监听,在函数中返回 " 对象.value.属性 "

watch(() => student.value.name, (newValue, oldValue) => {console.log('学生姓名','新值:', newValue, '旧值:', oldValue)
})

② 通过配置deep为true开启深度监听,监听对象所有属性

watch(student,  (newValue, oldValue) => {console.log('学生信息','新值:', newValue, '旧值:', oldValue)}, {deep: true}
)

4)联合监听

监听多个属性,monitorData用数组封装多个监听属性,newData与oldData用数组接受多个监听属性的旧值与新值

watch([clazz1 , clazz2], ([newClazz1, newClazz2], [oldClazz1, oldClazz2]) => {}
)

这里用到了 解构语法,用变量接受数组的成员,也可以直接接收整个数组

通过多个函数监听

watch([() => clazz.value ,  () => clazz2.value], ([newClazz1, newClazz2], [oldClazz1, oldClazz2]) => {}
)

总结

        通过以上使用可以发现:

                ①直接传递监听数据,需要传递响应式对象(ref对象)

                ② 使用函数返回监听数据时,需要返回响应式对象内部具体的数据,即返回 .value 属性

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com