• Vue:watch的多种使用方法


    好家伙,

     

    补了一下watch的多种用法

     

    1.属性: 方法(最常用)

    使用最广泛的方式是将watch选项设置为一个对象,对象的属性是要观测的数据属性,值是一个回调函数,该回调函数会在属性变化时触发。例如:

    复制代码
    watch: {
      firstName: function(newVal, oldVal) {
        console.log('firstName changed:', newVal, oldVal);
      }
    }
    复制代码

     

     

    2.属性: 数组

    你可以在一个watch选项中观测多个数据属性,这可以通过将要观测的属性放入一个数组中来实现。例如:

    复制代码
    watch: {
      'person.firstName': function(newVal, oldVal) {
        console.log('firstName changed:', newVal, oldVal);
      },
      'person.lastName': function(newVal, oldVal) {
        console.log('lastName changed:', newVal, oldVal);
      }
    }
    复制代码

     

     

    3.属性: 对象

    另一种观测多个属性的方式是使用对象。在这种情况下,对象的键是要观测的属性,值是一个包含处理函数、handler的对象。

    该处理函数与属性值的回调函数相同,用于在属性更改时执行组件中的逻辑。它还可以包含其他选项,例如deepimmediate。例如:

    复制代码
    watch: {
      person: {
        handler: function(newVal, oldVal) {
          console.log('person changed:', newVal, oldVal);
        },
        deep: true
      }
    }
    复制代码

     

     

    4.属性:字符串

    还可以使用字符串指定要观察的属性,然后使用对应的方法名称作为回调函数。这个选项在只有一个属性需要观察的情况下非常有用。例如:

    复制代码
    watch: {
      'person.firstName': 'firstNameChanged'
    },
    methods: {
      firstNameChanged: function(newVal, oldVal) {
        console.log('firstName changed:', newVal, oldVal);
      }
    }
    复制代码

     

     

    5.带命名空间的watch

    watch选项中可以使用字符串表示要观测的属性,可以使用.来访问对象中的属性,如'person.firstName',但是这样会导致处理函数与属性名称紧密耦合,不便于维护。

    为了解决这个问题,Vue提供了一种带命名空间的watch用法,这可以通过在watch选项中使用对象来实现。

    对象的每个键都代表一个观测的命名空间,值是观测该命名空间下属性的处理函数。例如:

    复制代码
    watch: {
      person: {
        firstName: function(newVal, oldVal) {
          console.log('firstName changed:', newVal, oldVal);
        },
        lastName: function(newVal, oldVal) {
          console.log('lastName changed:', newVal, oldVal);
        }
      }
    }
    复制代码

    这里,我们可以为person对象指定两个命名空间—firstNamelastName,这些命名空间被视为person层次结构的子命名空间。

     

     

    6.$watch

    除了在组件选项中设置watch属性之外,Vue还允许你使用实例方法$watch来实现相同的效果。

    与组件选项中设置的watch选项不同,调用$watch时可以在任何地方使用,例如在计算属性、方法或任何其他实例方法中。例如:

    复制代码
    created() {
      this.$watch('person.firstName', function(newVal, oldVal) {
        console.log('firstName changed:', newVal, oldVal);
      })
    }
    复制代码

     

     

    7.深度观测

    在默认情况下,watch只会观测对象的第一层属性的变化。这意味着在对象的嵌套层次结构中更改属性时,不会触发处理函数。要观测对象的深层属性,可以在watch选项中使用deep属性,如下所示:

    复制代码
    watch: {
      'person.name': {
        handler: function(newVal, oldVal) {
          console.log('name changed:', newVal, oldVal);
        },
        deep: true
      }
    }
    复制代码

    在这个例子中,我们观察person对象的name属性,使用deep: true选项在对象深层次结构中更改属性时仍然能够触发处理函数。

    综上所述,Vue的watch选项提供了多种方法来观测数据属性的变化,让我们能够编写更加优雅和维护性更高的代码。

     

  • 相关阅读:
    4.8 Verilog过程连续赋值
    WindowManagerService详述
    数据挖掘与分析应用2:大厂制作周报报表制作方法与标准格式,联动使用index和match配合sumif和sumifs函数
    蓝桥杯双周赛算法心得——串门(双链表数组+双dfs)
    Qt学习总结之QDateTimeEdit
    【华为上机真题 2022】取近似值
    在绩效评估中使用 360 反馈
    中文分词库-jieba
    es常用命令
    Sweet Butter(简单spfa)
  • 原文地址:https://www.cnblogs.com/FatTiger4399/p/17788007.html