在Vue2中,watch的用法如下
https://blog.csdn.net/Brave_heart4pzj/article/details/135604394
这一篇,来学习Vue3中的watch用法
引入函数
import {ref,watch} from 'vue'
定义变量
// 数据
let sum = ref(0)
watch监视变量
注意:
1、监视的ref变量,不可以写成sum.value
2、这里居然可以递归调用哦!!!
// 监视,情况一:监视【ref】定义的【基本类型】数据
const stopWatch = watch(sum,(newValue,oldValue)=>{
console.log('sum变化了',newValue,oldValue)
if(newValue >= 10){
stopWatch()
}
})
引入函数
import {ref,watch} from 'vue'
定义变量
// 数据
let person = ref({
name:'张三',
age:18
})
watch监视变量
监视的是对象的地址值
若想监视对象内部属性的变化,需要手动开启深度监视
watch的第一个参数是:被监视的数据
watch的第二个参数是:监视的回调
watch的第三个参数是:配置对象(deep、immediate
等等…)
注意:
如果这里不配置deep
项,则修改person
里面的属性,不会触发监视。
watch(person,(newValue,oldValue)=>{
console.log('person变化了',newValue,oldValue)
},{deep:true})
引入函数
import {reactive,watch} from 'vue'
定义变量
// 数据
let person = reactive({
name:'张三',
age:18
})
watch监视变量
默认是开启深度监视的,且无法关闭
watch(person,(newValue,oldValue)=>{
console.log('person变化了',newValue,oldValue)
})
解决,watch单独监视对象中某个属性的变化的情况
引入函数
import {reactive,watch} from 'vue'
定义变量
// 数据
let person = reactive({
name:'张三',
age:18,
car:{
c1:'奔驰',
c2:'宝马'
}
})
watch监视变量
1、监视响应式对象中的某个属性,且该属性是基本类型的,要写成函数式
watch(()=> person.name,(newValue,oldValue)=>{
console.log('person.name变化了',newValue,oldValue)
})
2、监视响应式对象中的某个属性,且该属性是对象类型的
可以直接写,也能写函数,更推荐写函数,根据需要开启深度监视
watch(()=>person.car,(newValue,oldValue)=>{
console.log('person.car变化了',newValue,oldValue)
},{deep:true})
引入函数
import {reactive,watch} from 'vue'
定义变量
// 数据
let person = reactive({
name:'张三',
age:18,
car:{
c1:'奔驰',
c2:'宝马'
}
})
watch监视变量
监视多个属性,用数组组装后,即可进行监视
watch([()=>person.name,person.car],(newValue,oldValue)=>{
console.log('person.car变化了',newValue,oldValue)
},{deep:true})