vue3之watchEffect详解
创始人
2025-05-29 10:08:08
0

watchEffect函数的作用:

传入的一个函数,当依赖项变化的时候,重新执行改函数。

watchEffect函特性:

watch相似都可以监听一个数据源。
但是watchEffect会在初始化的时候调用一次,与watchimmediate类似。

watchEffect使用

watchEffect(() => {console.log(`当${sum.person.age}的值变化的时候调用,初始化的时候也调用一次`)
})   //打印结果 //18 的值变化了!初始化调用//19 的值变化了依赖项调用

watchEffect接收一个副作用函数

watchEffect(onInvalidate => {console.log(`${sum.person.age} 的值变化了!`)onInvalidate(() => {console.log('清除副作用函数执行了!')})
})	//打印结果 //18 的值变化了!	//清除副作用函数执行了!//19 的值变化了!

onInvalidate清除副作用函数注意点

1.该函数总是在watchEffect执行的时候再次执行
2.当组件被销毁的时候该函数再次执行
3.该函数总是优先于watchEffect中的同步/异步代码执行
4.Promize函数的执行应该在该函数下面

onInvalidate清除副作用函数的执行时机由flush控制

watchEffect(onInvalidate => {console.log(`${sum.person.age} 的值变化了!`)onInvalidate(() => {console.log('清除函数执行了!')})
},{//'pre' 在组件更新更新前运行,默认为'pre'//'post'在组件更新更新后运行//'sync'强制效果始终同步触发。然而,这是低效的,应该很少需要。flush:'post'
})//打印结果 //18 的值变化了!//清除函数执行了!// 19 的值变化了!

watchEffect侦听器调试

watchEffect(() => {console.log(`${sum.person.age} 的值变化了!`)
}, {onTrack(e) { //追踪其依赖的时候触发,只能在开发者模式下使用console.log(e.target)},onTrigger(e) {  //依赖项被改变的时候触发,只能在开发者模式下使用console.log(e.target)}
})

watchPostEffect

watchEffect 的别名,带有 flush: ‘post’ 选项。

watchSyncEffect

watchEffect 的别名,带有 flush: ‘sync’ 选项。

相关内容

热门资讯

日媒曝光:日本曾制定3套“夺岛... 据央视新闻报道,随着日本首相高市早苗涉台挑衅言论持续发酵,日本自卫队在靠近台海的岛屿加强军力部署的情...
舞蹈家黄豆豆获破格提拔,已任副... 今年4月拟破格提拔的舞蹈家黄豆豆,已有新消息。 澎湃新闻注意到,中国舞蹈家协会官网近日更新后显示,黄...
李霄鹏告别青岛海牛:战术调整与... 随着2023赛季的落幕,李霄鹏教练组已正式与青岛海牛球员告别,确认下赛季将不再继续执教。这一决定不仅...
高市早苗狠话说早了,美国国会:... 日本首相高市早苗发表的“若台海有事,日本就可行使集体自卫权”的言论,完全就是刻意放狠话,对华发出战争...
法律顾问能处理保险法律事务吗 在当今复杂的商业和法律环境中,保险法律事务对于企业和个人都至关重要。许多人会疑惑,法律顾问是否有能力...
海南国际清算所:依托海南自贸港... 编者按 随着我国多层次的商品市场体系持续完善,场外衍生品市场发展加速推进,其服务实体经济的核心价值正...
威少21+6+11约基奇空砍4... 【搜狐体育战报】北京时间11月23日NBA常规赛,客场作战的国王以128-123击败掘金。威斯布鲁克...
跨境电商高发!多部门共织“天罗... 东方网11月23日消息:11月21日,上海市人民检察院第三分院与上海海关缉私局、上海海警局、上海市第...
法律顾问能处理旅游法律事务吗 在旅游行业蓬勃发展的当下,各类旅游法律事务也日益增多,许多人会疑惑法律顾问是否能处理旅游法律事务。答...
法律顾问能处理哪些法律事务 在当今复杂多变的商业环境中,企业面临着各种各样的法律风险和挑战,法律顾问的重要性日益凸显。那么,法律...