Vue3_2024_6天【回顾上篇watch常见的前三种场景】另两种待补

第一种情况:监视【ref】定义(基本数据类型)

  • 1.引入watch
  • 2.格式:watch(基本数据类型数据,监视变化的回调函数)

注意点:

2.1.watch里面第一个参数,是数据~~【监视的基本类型变量名】,不需要.value,(前面说过,ref定义的数据,使用都需要.value,当这里使用数据,不是值!)

2.2.watch里面第二个参数,是回调函数,因为setup中没有this,所以这里回调函数使用箭头函数;

  • 3.代码举例:
css 复制代码
let num=ref(10);
watch(
	num(newValue,oldValue)=>{
		console.log ( '数据变化了',newValue,oldValue);
	}
)

第二种情况:监视【ref】定义的(对象数据类型)

  • 1.引入watch
  • 2.格式:watch(对象类型数据,监视变化的回调函数,{ 监听配置 例如:deep:true、immediate} )
  • 3 代码举例:
css 复制代码
let testObj=ref({a=1,b=2,c=3});
changeObj(){
testObj.value={a=6,b=7,c=9};//监听ref对象,+.value;
}
watch(testObj,(newValue,oldValue)=>{
console.log("对象变化了",newValue,oldValue)
},{deep:true});

注意点:

这里可以看到,监视ref定义的对象,watch里面有三个参数(监视ref定义基本数据类型~~watch只有两个参数)
3.1.第一个参数,仍旧是数据,

3.2 第二个参数,仍旧是检测数据变化的回调,

3.3 第三个参数,属于监听对象的配置,

配置1:deep :true (深度监听对象," Vue会递归地将对象的所有属性都转换为响应式对象,从而实现对对象内部属性的深度监听 ")

配置2:immediate 立即执行,说明:watch一般初始页面时,不会触发watch,只有当watch中属性变化后,才会执行watch对应监听;若配置immediate,则页面初始化时按生命周期执行顺序,一直到watch时,发现配置了immediate立即执行(命令),则会自动给你执行这个监视器!

这里列举两个常用配置,当然还有其余配置...

第三种情况:监视【reactive】定义的(对象数据类型)

  • 1.引入watch
  • 2.格式:watch(对象类型数据,监视变化的回调函数)
  • 3.代码举例
css 复制代码
let testObj=reactive({a=1,b=2,c=3});
changeObj(){
Object.assign(testObj,{a=9,b=8,c=7});//reactive定义对象赋值,必须使用Object.assign才继续保持对象赋值后,仍旧响应式效果
}
watch(testObj,(newValue,oldValue)=>{
console.log("对象变化了",newValue,oldValue)
});

注意点:

这里可以看到,监视reactive定义对象类型~~watch只有两个参数(监视ref定义的对象,watch里面有三个参数),因为reactive的监听watch里面只有两个参数,并且自带deep深度监听效果。
3.1.第一个参数,仍旧是数据,

3.2 第二个参数,仍旧是检测数据变化的回调,

补充

监听ref定义对象、监听reactive定义的对象,【前者】对象的赋值(且不影响响应式效果),直接采用:右边对象赋值给左边对象,【后者】对象的赋值,无法直接左边新对象赋值右边,这就是它局限性,需要使用Object.assign(对象A,对象B)方法,将右边对象B的值,copy过去给到对象A相同key上。最后如图:

相关推荐
yuki_uix2 分钟前
AI辅助网页设计:从图片到代码的实践探索
前端
我想说一句2 分钟前
事件机制与委托:从冒泡捕获到高效编程的奇妙之旅
前端·javascript
陈随易3 分钟前
MoonBit助力前端开发,加密&性能两不误,斐波那契测试提高3-4倍
前端·后端·程序员
汤姆Tom8 分钟前
JavaScript reduce()函数详解
javascript
小飞悟9 分钟前
你以为 React 的事件很简单?错了,它暗藏玄机!
前端·javascript·面试
中微子16 分钟前
JavaScript 事件机制:捕获、冒泡与事件委托详解
前端·javascript
Whoisshutiao33 分钟前
网安-XSS-pikachu
前端·安全·网络安全
惊鸿28738 分钟前
Taro3+小程序Canvas动态生成海报和二维码分享到朋友圈
前端
蓝翔认证10级掘手43 分钟前
🤯 家人们谁懂啊!我的摸鱼脚本它...它成精了!🚀
javascript
做梦都在学习前端1 小时前
发布一个monaco-editor 汉化包
前端·npm·vite