目录一、watch新用法1.1、watch使用语法1.2、watch监听多个属性值1.3、watch监听引用数据类型二、watchEffect三、watch与watchEffect区
选项式API中,watch 使用
watch:{
mood(curVal,preVal){
console.log('cur',curVal);//最新值
console.log('pre',preVal);//修改之前的值
}
}
在 Composition api
中,使用 watch
时,必须先引入。
使用语法为:
import { watch } from "Vue"
watch(
name ,
( curVal , preVal )=>{ //业务处理 },
options
)
共有三个参数,分别为:
name
:需要帧听的属性(curVal,preVal)=>{ //业务处理 }
箭头函数,是监听到的最新值和本次修改之前的值,此处进行逻辑处理。options
:配置项,对监听器的配置,如:是否深度监听。页面刚进入的时候并不会执行,值发生改变的时候,才会打印出当前最新值和修改之前的值。
示例1:监听一个数据
import { ref , watch } from "vue"
export default{
setup(){
const mood = ref("")
//帧听器
watch(mood,(curVal,preVal)=>{
console.log('cur',curVal);
console.log('pre',preVal);
},{
//配置项
})
return{
mood
}
}
}
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);
},{
//配置项
})
watch
监听引用数据类型时,如果只监听其中某个属性时,
使用语法如下:
watch(()=>obj.name,(curValue,preValue)=>{
//帧听引用数据类型的某个属性
},{
//配置项
})
第一个参数,回调函数返回的是需要帧听对象的属性。后边的参数与上边的一致。
示例3:帧听对象某个属性
<template>
<div>
{{obj}}
<input type="text" v-model="obj.name">
</div>
</template>
<script>
import { ref , Reactive , watch } from "vue"
export default{
setup(){
const obj = reactive({ name:'qq',sex:'女' })
watch(()=>obj.name,(cur,pre)=>{
console.log('cur',cur);
},{ })
return{
obj
}
}
}
</script>
如果我们试着把属性去掉,直接监听整个对象,发现watch
好像失效了。此时我们就需要引入 watchEffect
。
watchEffect
也是一个帧听器,是一个副作用函数。它会监听引用数据类型的所有属性,不需要具体到某个属性,一旦运行就会立即监听,组件卸载的时候会停止监听。
示例4:监听对象
<template>
<div>
{{obj}}
<input type="text" v-model="obj.name">
<input type="text" v-model="obj.sex">
</div>
</template>
<script>
import { reactive , watchEffect } from "vue"
export default{
setup(){
let obj = reactive({ name:'qq',sex:'女'})
watchEffect(() => {
console.log('name',obj.name);
console.log('sex' , obj.sex);
})
return{
obj
}
}
}
</script>
watchEffect
参数只有一个回调函数。此时刷新页面进入,watchEffect
就会打印结果。
watch
与 watchEffect
都是监听器,那么它们之间有什么关系呢?
watch
监听函数可以添加配置项,也可以配置为空,配置项为空的情况下,
watch的特点为:
watch 的配置项可以补充watch特点上的不足,可以配置的有:
immediate
:配置watch属性是否立即执行,值为 true 时,一旦运行就会立即执行,值为false
时,保持惰性。deep
:配置 watch
是否深度监听,值为 true 时,可以监听对象所有属性,值为 false 时保持更加具体特性,必须指定到具体的属性上。watchEffect 副作用函数它的特点分别为:
watch
比较难理解。watch
的前两个特点与 watchEffect
的两个特点刚好相反,watch
通过配置项可以修改成带有 watchEffect
特点。
示例5:watch
监听对象
<template>
<div>
{{obj}}
<input type="text" v-model="obj.name">
</div>
</template>
<script>
import { ref , reactive , watch } from "vue"
export default{
setup(){
const obj = reactive({ name:'qq',sex:'女' })
watch(()=>obj,(cur,pre)=>{
console.log('cur',cur);
},{
immediate:true,
deep:true
})
return{
obj
}
}
}
</script>
到此这篇关于 vue 3 中watch 和watchEffect 的新用法的文章就介绍到这了,更多相关 vue 3 中watch 和watchEffect 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: vue3中watch和watchEffect的新用法
本文链接: https://www.lsjlt.com/news/158589.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0