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.9亿元建设的兰亭湖...
湖南芙蓉律师事务所组织开展第二... 6月4日下午,第二届“芙蓉律师杯”书画展作品评审活动在湖南芙蓉律师事务所44楼大会议室开展。活动由律...
系统治水 科技管水 制度护水 系统治水 科技管水 制度护水 十堰多措并举确保“一泓清水永续北送” 茅箭区茅塔河枧槽沟段生态湿地...
又要出新政策了 最近,有一种很强烈的感觉,6月我们极有可能会出台新的经济刺激政策。 其中, 一个涉及房地产,属于短期...
皇氏集团股份有限公司 关于诉讼... 本公司及董事会全体成员保证信息披露的内容真实、准确、完整,没有虚假记载、误导性陈述或重大遗漏。 特别...
来CBA不?文班亚马现身北京队... 6月5日晚,马刺球员文班亚马今晚现身北京男篮的训练馆,练习了投篮。 文班亚马今天在北京安排了攀登长城...
“政策+活动”双轮驱动 提振消... 家住东营港经济开发区仙河镇孤东佳苑的刘女士正忙活着装修新房,经过多方咨询,3台空调在商家促销和以旧换...
英国宣布军队转向“备战状态”,... 当地时间6月2日,英国首相斯塔默发表电视讲话,发布《战略国防评估报告》,宣布为了面对地缘安全挑战,英...
随意放生“五步蛇”?被毒蛇咬伤... 近期,三亚一女游客 被疑似毒蛇咬伤 不治离世事件持续引发关注 由于毒蛇分布广泛 且致命性强 相关话题...