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’ 选项。

相关内容

热门资讯

原创 就... 【军武次位面】作者:乐乐 日前,美国“Military Watch”网站报道称,中国海军一艘“基洛”...
输球又输点!阿森纳赛后点球3-... 在刚刚结束的季前友谊赛中,阿森纳以2-3不敌比利亚雷亚尔,随后在点球大战中以3-4失利,令人意外的是...
8月1日起乌鲁木齐天山国际机场... 2025年8月1日起,新疆机场集团乌鲁木齐天山国际机场将迎来一项关键服务升级:所有国内出港航班值机手...
“我就在这儿坐着怎么了”,火车... 安全乘车,文明出行,是每一位公民应尽的责任和义务。近日,旅客李某持无座车票强占其他旅客座位,经乘警多...
黑龙江省制定出台20条政策措施... 近日,黑龙江制定出台支持高端智能农机装备产业高质量发展20条政策措施。旨在引导产学研用等各方用好国家...
债券利息收入增值税新规落地在即... 债券利息收入税收新规实施前夕,政策性银行密集发行金融债。 8月5日,中国债券信息网披露的信息显示,中...
静乐县公安局征集“六霸”及殡葬... 为深入开展群众身边不正之风和腐败问题集中整治,严厉打击“六霸”及殡葬等领域涉民生违法犯罪,现向社会各...
原创 欧... 欧洲媒体在8月5日的报道中提到,美国与欧洲似乎达成一致,准备联合打压俄罗斯石油的主要买家——中国和印...
普京与美特使聊了3小时之后,特... 来源:视觉中国 俄罗斯总统普京与美国特使威特科夫的会晤在持续近3小时后结束。 据新华社报道,俄总统助...