vue3中watch/watchEffect用法

watch的语法
// name: 需要观察的对象,curVal:新值,preVal:旧值,options:配置项,deep,immediate
watch(name,(curVal , preVal)=>{},{options})
基本类型
const count = ref(0);
watch(count,(newVal,oldVal) => {
     console.log('值改变了',newVal,oldVal)
 })
Object类型
const obj=ref({
	name:"李四",
	isCollapse:true
})
watch(obj,(newVal,oldVal) => {
    console.log('值改变了',newVal,oldVal)
  },
  { deep: true,immediate:true }
)
观察object类型单个属性
const obj=ref({
	name:"李四",
	isCollapse:true
})
watch(()=>obj.value.isCollapse,(newVal,oldVal) => {
    console.log('值改变了',newVal,oldVal)
  },
  { deep: true,immediate:true }
)
观察多个数据
const count = ref(0);
const obj=ref({
	name:"李四",
	isCollapse:true
})
watch([count,obj],(newVal,oldVal) => {
    console.log('值改变了',newVal,oldVal)
  },
  { deep: true,immediate:true }
)
watchEffect

watchEffect 也是一个帧听器,是一个副作用函数。 它会监听引用数据类型的所有属性,不需要具体到某个属性

  watchEffect(() => {
      console.log('name:',obj.name)
    })
watchEffect停止监听
const stop = watchEffect(() => {
  console.log('name:',obj.name)
})
const stopWatchEffect = () => {
  console.log('停止监听')
  stop();
}
区别
  • watch 特点
    watch 监听函数可以添加配置项,也可以配置为空,配置项为空的情况下,watch的特点为:
    有惰性:运行的时候,不会立即执行;
    更加具体:需要添加监听的属性;
    可访问属性之前的值:回调函数内会返回最新值和修改之前的值;
    可配置:配置项可补充 watch 特点上的不足:
    immediate:配置 watch 属性是否立即执行,值为 true 时,一旦运行就会立即执行,值为 false 时,保持惰性。
    deep:配置 watch 是否深度监听,值为 true 时,可以监听对象所有属性,值为 false 时保持更加具体特性,必须指定到具体的属性上。

  • watchEffect 特点
    非惰性:一旦运行就会立即执行;
    更加抽象:使用时不需要具体指定监听的谁,回调函数内直接使用就可以;
    不可访问之前的值:只能访问当前最新的值,访问不到修改之前的值;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web:小源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值