【vue】监听属性watch

监视事件在vue中的使用还是很广泛的,今天来介绍一下。

对watch的简单理解:

一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。

示例:

// 键路径
vm.$watch('a.b.c', function (newVal, oldVal) {
  // 做点什么
})

// 函数
vm.$watch(
  function () {
    // 表达式 `this.a + this.b` 每次得出一个不同的结果时
    // 处理函数都会被调用。
    // 这就像监听一个未被定义的计算属性
    return this.a + this.b
  },
  function (newVal, oldVal) {
    // 做点什么
  }
)

常用参数介绍:

1、handler:其值是一个回调函数。即监听到变化时应该执行的函数。

2、immediate: 在选项参数中指定 immediate: true 将立即以表达式的当前值触发回调

vm.$watch('a', callback, {
  immediate: true
})
// 立即以 `a` 的当前值触发回调

3、为了发现对象内部值的变化,可以在选项参数中指定 deep: true 。注意监听数组的变动不需要这么做。

vm.$watch('someObject', callback, {
  deep: true
})
vm.someObject.nestedValue = 123
// callback is fired

实战应用:

之前做的一个小项目要实现评论数量的实时更新,这里我用监听很好地实现了这一需求。

1、监听data,如果data的值发生变化,执行Handler里面的方法

watch: {
    'data': {
      handler(data) {
        this.queryComment()
      }
    }
  }

2、发表评论成功,data+1使data数值发生变化

insertcomment(goComment).then(response => {
          if (response.code === '0000') {
            this.data += 1
            this.comment = ''
            this.answerCommentCount++
            Toast('评论发表成功!')
          }
})

效果展示:

Vue.js监听watch是一个用于监听Vue实例数据变化的功能。通过使用watch选项,我们可以指定要监听的数据属性,并在它们发生变化时执行特定的操作。 watch选项可以是一个对象,其每个属性都是要监听的数据属性,而可以是一个函数或一个对象。 当是一个函数时,它会接收两个参数:新和旧。在函数内部,我们可以根据需要执行任何操作,比如发送异步请求、计算属性、触发其他方法等。 当是一个对象时,我们可以使用不同的钩子函数来定义要在特定情况下执行的操作。常用的钩子函数包括: - immediate:在监听开始之后立即执行一次回调函数。 - handler:回调函数,当监听属性发生变化时触发。 - deep:深度监听,当监听属性内部发生变化时也会触发回调函数。 - immediate和deep可以一起使用。 下面是一个使用watch的示例: ```javascript data() { return { message: '', count: 0 } }, watch: { message(newVal, oldVal) { console.log('message changed:', newVal, oldVal); }, count: { handler(newVal, oldVal) { console.log('count changed:', newVal, oldVal); }, immediate: true, deep: true } } ``` 在上面的示例,我们监听了message和count两个属性。当message发生变化时,会执行相应的回调函数。而对于count属性,我们使用了一个对象来定义监听设置了immediate为true,表示在监听开始之后立即执行一次回调函数;设置了deep为true,表示深度监听count属性内部变化。 总的来说,watch是一个非常有用的功能,可以帮助我们在数据变化时执行相应的操作,实现更精细的控制和逻辑。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值