vue中watch使用注意事项

1 篇文章 0 订阅

watch功能是监听数据变化时触发某样事件的,数据可以是一个基本类型的数据,一个对象甚至是表单。

  watch: {
    dataA: function (new, old) {//new是改变后的数据,old是原数据
      console.log(new)
    },
    // 方法名
    dataB: 'someMethod',
    // 深度 watcher
    dataC: {
      handler: function (val, oldVal) { /* ... */ },
      deep: true
    },
    // 该回调将会在侦听开始之后被立即调用
    dataD: {
      handler: function (val, oldVal) { /* ... */ },
      immediate: true
    }
  }

注意点:当监听的数据不是一个简单的基本类型,比如一个对象,一个数组,此时应该使用深度监听:deep:true;当想让监听器一启动就触发一次watch,应该使用: immediate: true。

Vue3 的 `watch` 函数主要用于监听某个值的变化并执行相应的操作。对于初始值的处理方式,`watch` 默认只会在组件初始化时调用一次回调函数来处理初始值。 ### Vue3 Watch 初始值示例 #### 示例 1: 监听数组元素总数 假设我们有一个名为 `nums` 的数组: ```javascript const nums = [1, 2, 3]; watch(nums, () => { // 当数组发生变化时会执行此操作 }); ``` 这里 `watch` 对象本身不会直接访问 `nums` 数组的内容;它仅仅在 `nums` 数组改变时触发回调。对于初始值,它只会执行一次。 #### 示例 2: 监听对象的属性变化 当我们关注的是对象的一个特定属性时,同样可以使用 `watch`: ```javascript const demo = { name: "Alice" }; watch(() => demo.name, (newValue, oldValue) => { // 当 `demo.name` 发生变化时会执行此操作 }); ``` 在这个例子,当 `demo.name` 属性改变时,`watch` 回调函数会被调用。 ### 如何监听对象的子属性? 如果要监听对象的子属性,可以通过解构(destructuring)来实现更细粒度的监听: ```javascript const demo = { name: "Alice", age: 30 }; watch(() => ({ ...demo }), (newValue, oldValue) => { // 这里能访问到整个对象的变更情况 }); // 如果只想监听 name 属性的变化: watch(() => demo.name, (newValue, oldValue) => { // 只监听 name 属性的变化 }); ``` ### 注意事项: - **初始值处理**:默认情况下,`watch` 不会对初始值做特殊处理,只会在之后的值变动时触发。若需要针对初始值执行额外操作,通常需要手动编写逻辑来覆盖这种情况。 - **性能考虑**:频繁地使用 `watch` 可能会影响应用的性能。合理利用生命周期钩子或其他优化策略来管理依赖和更新逻辑可能更为高效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值