vue中的watch和$watch的用法实际场景和区别

watch(组件选项)

watch 是Vue组件的一个选项,它允许你定义一些监听器,这些监听器会在组件的响应式数据变化时调用。它主要用于组件内部的数据监听。

实际场景:

    当组件内部的数据变化时,需要执行一些操作,比如发送请求、更新其他数据、执行动画等。
    监听组件的props变化,并在变化时执行一些操作。

用法示例:

javascript

export default {  
  data() {  
    return {  
      query: ''  
    };  
  },  
  watch: {  
    // 监听query的变化  
    query(newVal, oldVal) {  
      // 当query变化时执行的逻辑  
      console.log(`Query changed from ${oldVal} to ${newVal}`);  
    }  
  }  

}

$watch(实例方法)

$watch 是Vue实例的一个方法,它允许你在Vue实例的任意时刻动态地添加监听器。它不限于组件的创建阶段,可以在组件的任何生命周期内使用。

实际场景:

    在组件的某个特定生命周期钩子(如mounted)中,根据条件添加监听器。
    在Vue实例已经创建后,需要监听某个尚未在组件的data或computed中定义的数据。
    在某些异步操作完成后,需要监听新获取的数据。

用法示例:

javascript

export default {  
  data() {  
    return {  
      someData: ''  
    };  
  },  
  mounted() {  
    // 组件挂载后,监听someData的变化  
    this.$watch('someData', (newVal, oldVal) => {  
      console.log(`SomeData changed from ${oldVal} to ${newVal}`);  
    });  
  }  

}

区别

    定义位置:watch 是Vue组件的一个选项,定义在组件的选项对象中;而 $watch 是Vue实例的一个方法,可以在组件的任何地方(包括生命周期钩子、方法中)调用。

    使用时机:watch 定义的监听器在组件实例化时就会生效;而 $watch 可以在组件的任何生命周期内调用,更加灵活。

    作用域:watch 主要用于组件内部的数据监听;而 $watch 可以在Vue实例的任何地方监听数据变化,包括全局Vue实例(如果有的话)。

    返回值:$watch 方法调用后会返回一个停止监听该属性的函数,可以用于手动停止监听;而 watch 选项定义的监听器则没有直接的停止监听的方法(除非通过条件渲染或销毁组件来间接实现)。

在实际开发中,选择使用 watch 还是 $watch 取决于你的具体需求和场景。如果你需要在组件内部监听数据变化,并且这些监听器在组件创建时就需要生效,那么使用 watch 选项会更方便。如果你需要在组件的某个特定时机动态地添加监听器,或者需要在Vue实例的任意地方监听数据变化,那么 $watch 方法会是更好的选择。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值