Vue中watch侦听器用法

watch 需要侦听特定的数据源,并在单独的回调函数中执行副作用

watch第一个参数监听源

watch第二个参数回调函数cb(newVal,oldVal)

watch第三个参数一个options配置项是一个对象{

immediate:true //是否立即调用一次

deep:true //是否开启深度监听

flush:“pre” // 更新时机

}

flush配置项

pre sync post
组件更新前执行(默认) 强制效果始终同步触发 组件更新后执行
1. 监听Ref 案例
import {
    
     ref, watch } from 'vue'

let message = ref({
    
    
    nav:{
    
    
        bar:{
    
    
            name:""
        }
    }
})

watch(message, (newVal, oldVal) => {
    
    
    console.log('新的值----', newVal);
    console.log('旧的值----', oldVal);
},{
    
    
    immediate:true,
    deep:true
})

监听多个ref 注意变成数组

import {
    
     ref, watch ,reactive} from 'vue'

let message = ref('')
let message2 = ref('')

watch([message,message2], (newVal, oldVal) => {
    
    
    console.log('新的值----', newVal);
    console.log('旧的值----', oldVal);
})
2. 监听Reactive

使用reactive监听深层对象开启和不开启deep 效果一样

import {
    
     ref, watch ,reactive} from 'vue'

let message = reactive({
    
    
    nav:{
    
    
        bar:{
    
    
            name:""
        }
    }
})

watch(message, (newVal, oldVal) => {
    
    
    console.log('新的值----', newVal);
    console.log('旧的值----', oldVal);
})

监听reactive 单一值

import {
    
     ref, watch ,reactive} from 'vue'

let message = reactive({
    
    
    name:"",
    name2:""
})

watch(()=>message.name, (newVal, oldVal) => {
    
    
    console.log('新的值----', newVal);
    console.log('旧的值----', oldVal);
}

猜你喜欢

转载自blog.csdn.net/weixin_53156345/article/details/134146270