当前位置: 首页 > 科技观察

Vue3学习笔记—Watch和WatchEffect的新用法

时间:2023-03-16 02:04:46 科技观察

OptionalAPI同前。本文主要通过OptionsAPI和CompositionAPI对比watch的用法,让大家快速掌握vue3中watch的新用法。建议收藏!1.watch的新用法在optionAPI中,watch使用watch:{mood(curVal,preVal){console.log('cur',curVal);//最新值console.log('pre',preVal);//修改之前的值}}1.1。watch使用语法在CompositionAPI中,使用watch时,必须先引入。使用语法为:import{watch}from"vue"watch(name,(curVal,preVal)=>{//businessprocessing},options)一共有三个参数,分别是:name:需要的属性listenedto(curVal,preVal)=>{//业务处理}箭头函数是监听到的最新值和本次修改前的值,这里进行逻辑处理。options:配置项,监听器的配置,如:是否深度监听。刚进入页面时,不会执行。当值发生变化时,会打印出当前最新值和修改前的值。示例1:监听一个数据import{ref,watch}from"vue"exportdefault{setup(){constmood=ref("")//framelistenerwatch(mood,(curVal,preVal)=>{console.log('cur',curVal);console.log('pre',preVal);},{//配置项})return{mood}}}watch也可以监控多个属性值,传入的数据变为一个数组,配置项保持不变。1.2.watch监控多个属性值示例2:监控多个属性watch([mood,target],([curMood,curTarget],[preMood,preTarget])=>{console.log('curMood',curMood);console.log('preMood',preMood);console.log('curTarget',curTarget);console.log('preTarget',preTarget);},{//配置项})1.3、watch监控引用数据类型watch监控时引用数据类型,如果只监听其中一个属性,使用语法如:watch(()=>obj.name,(curValue,preValue)=>{//frame监听引用数据类型的某个属性},{//配置项})第一个参数,回调函数返回需要监听的对象的属性。后面的参数和上面一致。示例3:框架监听对象的一个??属性如果我们尝试去掉属性,直接监控整个对象,发现watch好像是无效的。此时我们需要引入watchEffect。2.watchEffectwatchEffect也是一个帧监听器,也是一个副作用函数。它会监听引用数据类型的所有属性,不需要特定于某个属性。一旦运行它会立即监听,当组件被卸载时它会停止监听。示例4:监控对象watchEffect参数只有一个回调函数。这时刷新页面进入,watchEffect会打印结果。3、watch和watchEffect的区别和联系watch和watchEffect都是监听器,那么它们之间有什么关系呢?3.1.手表功能手表监控功能可以添加配置项,也可以配置为空。如果配置项为空,watch的特点是:惰性:运行时,不会立即执行。更具体:您需要添加监控属性。可以访问属性的前一个值:最新的值和修改前的值将在回调函数中返回。可配置:可添加配置项。3.2、watch配置项watch的配置项可以补充watch特性的不足,可以配置如下:immediate:配置watch属性是否立即执行,值为true时,一旦运行就立即执行,当值为false时,它??将保持惰性。deep:配置手表是否深度监控。当该值为真时,可以监视对象的所有属性。当该值为false时,将维护更具体的功能,并且必须将其分配给特定的属性。3.3.watchEffect的特点watchEffect副作用函数的特点是:非惰性:一旦运行就会立即执行。更抽象:使用时不需要指定谁在监听,直接在回调函数中使用即可。看懂比看难多了。不能访问上一个值:只能访问当前最新值,不能访问修改前的值。3.4.watch和watchEffect的关系watch的前两个特性正好和watchEffect的两个特性相反。watch可以通过配置项修改为具有watchEffect的特性。示例5:监视监听器对象