Vue3 watch监听

watch主要作用是侦听一个或多个数据的变化,数据变化时执行的回调函数

<template>
  <div>
    <input type="text" v-model="userName" placeholder="监听单个ref的值">
    <br>
    <input type="text" v-model="passWord" placeholder="监听多个ref的值">
    <br>
    <input type="text" v-model="obj1.a.b.c" placeholder="深度监听">
    <br>
    <input type="text" v-model="obj2.foo.bar.name" placeholder="监听reactive对象单个属性">
    <br>
    <input type="text" v-model="num" placeholder="immediate初始化立即执行">
    <br>
    <input type="text" v-model="state" placeholder="flush">
  </div>
</template>
<script setup>
import { ref,reactive,watch } from 'vue'

const userName = ref('')
const passWord = ref('')
const num = ref(null)
const state = ref(0)
const obj1 = ref({
  a:{
    b:{
      c:''
    }
  }
})
const obj2 = reactive({
  foo: {
    bar: {
      name: ''
    }
  }
})

//监听单个ref的值
watch(userName,(val)=>{
  console.log(val);
})

//监听多个ref的值
watch([userName,passWord],(val)=>{
  console.log(val);
})

//深度监听
//如果用ref定义,侦听的时候需要开启深度侦听
//如果用reactive定义,开启deep和不开启deep效果是一样的
watch(obj1,(val)=>{
  console.log(val);
},{
  deep:true
})

//监听reactive对象单个属性
watch(()=>obj2.foo.bar.name,(val)=>{
  console.log(val);
})

//immediate会将watch的回调函数在组件创建时立即执行了一次
watch(num,(val)=>{
  console.log(val);
},{
  immediate:true
})

//flush
//sync:同步模式下执行
//pre:在数据变化之前执行回调函数
//post:在数据变化之后执行回调函数,但是需要等待所有依赖项都更新后才执行
watch(state,(val)=>{
  console.log(val);
},{
  flush:'pre'
})
state.value++
</script>

注:本人前端小白 ,如有不对的地方还请多多指教

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值