Vue3监听器使用

本文介绍了Vue中watch的使用,包括监听简单数据和复杂数据类型。通过设置immediate参数可以实现在组件加载时立即执行监听回调,而deep参数用于深度监听对象的属性变化。同时展示了如何监听复杂对象的某个属性,以及如何同时监听多个响应式数据的值。
摘要由CSDN通过智能技术生成

watch(监听的对象或值,

回调函数(参数新值,旧值),

配置项是对象={
  immediate: true//立即监听--进入就会执行一次

deep:true //深度监听
})

首先引入

import { ref, watch } from 'vue';

设置响应式数据

const num = ref(1)

设置点击事件,点击触发修改num

const btn = () => {
  // 改变简单数据
  num.value++
}

监听简单数据类型----- immediate: true//立即监听--进入就会执行一次

// 简单数据类型监听
watch(num, (newVal, oldVal) => {
  console.log(newVal, oldVal);
}, {
  immediate: true//立即监听--进入就会执行一次
})

---------------------------------------------------------------------------------------------------------------------------------

设置复杂数据类型

const obj = ref({ age: 18 })

点击事件添加修改复杂数据

const btn = () => {
  // 改变简单数据
  num.value++
  // 改变复杂数据
  obj.value.age++
}

设置监听--监听整个对象需要开启深度监听----- deep: true,//开启深度监听

// 监听整个对象
watch(obj, (newVal, oldVal) => {
  console.log(oldVal);//无效--复杂数据类型监听没有旧值参数
  console.log(newVal, 'fz');
}, {
  deep: true,//开启深度监听
  immediate: true//立即监听
})

=========================================================================

监听复杂数据类型的某一个属性值

设置复杂数据

const obj2 = ref({ num: 0, max: 99, min: 0 })

点击事件,修改对象内的属性值

const btn = () => {
  // 改变简单数据
  num.value++
  // 改变复杂数据
  obj.value.age++
  //----
  obj2.value.num++
}

监听obj对象内的num属性值的变化-----不需要开启深度监听,但是想页面加载就执行需要设置immediate,可以监听到新值和旧值

// 监听复杂对象的某一个值,不需要开启深度监听
watch(() => obj2.value.num, (newVal, oldVal) => {
  console.log(newVal, oldVal, 'hs');
})

*************************************************************************************************************

响应式数据

const num = ref(1)
// ***************
// 复杂数据类型
const obj = ref({ age: 18 })

同时监听多个值---不要开启深度监听可以,监听obj内数据的变化

// 监听多个值(简单数据和复杂数据)--监听参数是数组形式
watch([num, obj], (newVal, oldVal) => {
  console.log(newVal, oldVal, 'zzz');
})

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值