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上。最后如图:

相关推荐
源码获取_wx:Fegn089512 分钟前
计算机毕业设计|基于springboot + vue景区管理系统(源码+数据库+文档)
java·vue.js·spring boot·后端·课程设计
踢球的打工仔1 小时前
typescript-接口的基本使用(一)
android·javascript·typescript
徐小夕@趣谈前端1 小时前
NO-CRM 2.0正式上线,Vue3+Echarts+NestJS实现的全栈CRM系统,用AI重新定义和实现客户管理系统
前端·javascript·人工智能·开源·编辑器·echarts
catino1 小时前
图片、文件上传
前端
Mr Xu_1 小时前
Vue3 + Element Plus 实现点击导航平滑滚动到页面指定位置
前端·javascript·vue.js
小王努力学编程2 小时前
LangChain——AI应用开发框架(核心组件1)
linux·服务器·前端·数据库·c++·人工智能·langchain
pas1362 小时前
35-mini-vue 实现组件更新功能
前端·javascript·vue.js
前端达人2 小时前
为什么聪明的工程师都在用TypeScript写AI辅助代码?
前端·javascript·人工智能·typescript·ecmascript
快乐点吧2 小时前
使用 data-属性和 CSS 属性选择器实现状态样式控制
前端·css
EndingCoder3 小时前
属性和参数装饰器
java·linux·前端·ubuntu·typescript