Watch那些事

watch()

侦听一个或多个响应式数据源,并在数据源变化时调用所给的回调函数。【人话:敌不动我不动,敌动我动】

一般情况基本数据使用ref,引用数据使用reactive,当然这也不绝对

三个入参

第一个参数:被侦听的目标

  • ref
  • reactive
  • getter函数

第二个参数:回调函数 (newVal,oldVal ,onCleanup)=>{}

  • newVal 新值,oldVal 旧值
  • onCleanup 清理副作用 【人话:清除函数体里面什么定时器,绑定的事件…】

第三个参数:配置项

  • immediate?: boolean // 默认:false, 是否进入组件就加载一下

  • deep?: boolean // 默认:false,深度监听,

  • flush:调整回调函数的刷新时机。post | sync |pre 默认

    • post 侦听器回调会在父组件以及所属组件的 DOM 更新之后调用
    • sync 侦听器回调会在Vue 进行任何更新之前触发
    • pre 侦听器回调会在父组件更新 (如有) 之后、所属组件的 DOM 更新之前被调用
  • onTrack / onTrigger:调试侦听器的依赖。参考调试侦听器。

  • once:回调函数只会运行一次。侦听器将在回调函数首次运行后自动停止。

侦听ref对象

let state = ref("hello world")
//注意下面两种写法的区别
watch(state,(newVal)=>{})
watch(()=>state.value,(newVal)=>{})

侦听reactive响应式数据

let state = reactive({name:"jucky"})

watch(state,(newVal)=>{}) //自动开启深度监听
watch(()=>state.name,(newVal)=>{})
watch(()=>state,(newVal)=>{},{deep:true}) //需要deep配合


项目中遇到的

let a = ref(1)
let b = ref(2)
a = b
watch(a,(newVal)=>{})  //有效

let c = ref(3)
let d = ref(4)
watch(c,(newVal)=>{})  //无效,
c = d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值