vue3中的watchEffect高级侦听器

介绍

watchEffect有两个参数,一个回调函数,一个是对象(设置配置项)
watchEffect执行传入的一个函数,同时响应式追踪其依赖,并在依赖更新时重新运行该函数
watchEffect是非惰性的,会默认自动调用一次的
 
复制代码
import { watchEffect, ref } from 'vue'

let msg = ref<string>('炎夏')
let msg2 = ref<string>('九月')

watchEffect(() => {
    console.log('msg', msg.value);
    console.log('msg2', msg2.value);
})
复制代码

 

清除副作用

可以接收一个回调函数,在触发侦听之前调用,也就是值发生改变之前
比如我们可以在下面例子中,接收一个命名为oninvalidate的回调函数
 
watchEffect((oninvalidate) => {
  oninvalidate(()=>{
      // 可以用来做处理防抖或者处理逻辑之类的操作
    // ...
  })
  console.log('msg', msg.value);
  console.log('msg2', msg2.value);
})

停止侦听

watchEffect返回一个函数,在调用这个函数之后,watchEffect就会停止侦听,不会再执行watchEffect里的相关代码操作
复制代码
const stop = watchEffect((oninvalidate) => {
  oninvalidate(()=>{
      // 可以用来做处理防抖或者处理逻辑之类的操作
    // ...
  })
  console.log('msg', msg.value);
  console.log('msg2', msg2.value);
})

stop()
复制代码

配置选项

watchEffect可以设置配置项
flush:用来设置更新时机,有三个值:
👉pre:组件更新前执行,
👉sync:强制效果始终同步触发,
👉post:组件更新之后执行(常用)
onTrigger:用来调试watchEffect
 
复制代码
import { watchEffect, ref } from 'vue'

watchEffect((oninvalidate) => {
  oninvalidate(()=>{
    // ...
  })
  console.log('msg', msg.value);
  console.log('msg2', msg2.value);
},{
  flush: 'post',
  onTrigger(){
    debugger
  }
})
复制代码

 

 
 
 
 
 
 
posted @   -鹿-  阅读(144)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示