软件系统定制开发VUE3的watch监听使用

的watch监听使用

watch介绍

vue中watch软件系统定制开发用来监听数据的变化.软件系统定制开发获取数据变化前后的值
watch的完整入参

watch(监听的数据,副作用函数,配置对象)watch(data, (newData, oldData) => {}, {immediate: true, deep: true})
  • 1
  • 2

的不同情况

创建响应式数据

import { ref, watch, reactive } from "vue";let name = ref("moxun");let age = ref(18);let person = reactive({  Hobby: "photo",  city: {    jiangsu: {      nanjing: "雨花台",    },  },});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1 监听单个refimpl数据

watch(name, (newName, oldName) => {  console.log("newName", newName);});
  • 1
  • 2
  • 3

2 监听多个refimpl数据

方式一:vue3允许多个watch监听器存在

watch(name, (newValue, oldValue) => {  console.log("new", newValue, "old", oldValue);});watch(age, (newValue, oldValue) => {  console.log("new", newValue, "old", oldValue);});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

方式二:将需要监听的数据添加到数组

watch([name, age], (newValue, oldValue) => {  // 返回的数据是数组  console.log("new", newValue, "old", oldValue);});
  • 1
  • 2
  • 3
  • 4

3 监听proxy数据

注意

1.此时vue3将强制开启deep深度监听
2.当监听值为proxy对象时,oldValue值将出现异常,此时与newValue相同

// 监听proxy对象watch(person, (newValue, oldValue) => {  console.log("newValue", newValue, "oldValue", oldValue);});
  • 1
  • 2
  • 3
  • 4

4 监听proxy数据的某个属性

需要将监听值写成函数返回形式,vue3无法直接监听对象的某个属性变化

watch(  () => person.Hobby,  (newValue, oldValue) => {    console.log("newValue",newValue, "oldvalue", oldValue);  });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意
当监听proxy对象的属性为复杂数据类型时,需要开启deep深度监听

watch(  () => person.city,  (newvalue, oldvalue) => {    console.log("person.city newvalue", newvalue, "oldvalue", oldvalue);  },{    deep: true  });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5 监听proxy数据的某些属性

watch([() => person.age, () => person.name], (newValue, oldValue) => {  // 此时newValue为数组  console.log("person.age", newValue, oldValue);});
  • 1
  • 2
  • 3
  • 4

总结

1.与vue2中的watch配置一致
2.两个坑:

监听reactive定义的proxy代理数据时
oldValue无法正确获取
强制开启deep深度监听(无法关闭)

监听reactive定义的proxy代理对象某个属性时deep配置项生效

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发