返回

深入理解 Vue3 中的 Computed 与 Watch

前端

Vue3 学习日志 2——深入理解 Computed 与 Watch

大家好,欢迎来到我的 Vue3 学习之旅的第二篇日志。在这一篇中,我们将深入探讨两个重要的概念:Computed 和 Watch。

** computed **

Computed 属性是一个惰性计算 属性,它会在其依赖项发生改变时自动重新计算其值。这意味着只有当用于计算 Computed 属性的属性发生改变时,Computed 属性才会重新计算。这可以大大提高性能,因为它避免了不必要的重新渲染。

语法

computed: {
  computedProperty() {
    // 计算属性的计算逻辑
  }
}

示例

以下是一个示例,它演示了如何使用 Computed 属性计算一个对象的长度:

const object = {
  name: 'John Doe',
  age: 30
};

const app = new Vue({
  computed: {
    objectLength() {
      return Object.keys(this.object).length;
    }
  },
  data() {
    return {
      object
    };
  }
});

console.log(app.objectLength); // 输出:2

** watch **

Watch 顾名思义,它是一个观察者。它允许我们在一个属性发生改变时执行某些操作。与 Computed 不同,Watch 是一个主动侦听器,它会在其被观察的属性发生改变时立即触发。

语法

watch: {
  watchedProperty(newValue, oldValue) {
    // 属性发生改变时要执行的操作
  }
}

示例

以下是一个示例,它演示了如何在属性 count 发生改变时打印一条消息:

const app = new Vue({
  watch: {
    count(newValue) {
      console.log(`属性 count 的新值为 ${newValue}`);
    }
  },
  data() {
    return {
      count: 0
    };
  }
});

app.count++; // 输出:属性 count 的新值为 1

两者的区别

Computed 和 Watch 虽然都是用于响应数据变化的机制,但它们在以下几个方面有所不同:

  • 计算方式: Computed 是惰性计算的,而 Watch 是主动侦听的。
  • 执行时机: Computed 在其依赖项发生改变时重新计算,而 Watch 在其被观察的属性发生改变时立即执行。
  • 使用场景: Computed 通常用于计算派生属性,而 Watch 通常用于在属性发生改变时执行某些副作用操作。

选择

在选择使用 Computed 还是 Watch 时,需要考虑以下因素:

  • 性能: 如果不需要在属性发生改变时立即执行操作,则使用 Computed 可以提高性能。
  • 代码复杂性: Watch 的语法可能比 Computed 更复杂,因为它需要提供一个回调函数。
  • 响应式: 如果需要在属性发生改变时立即执行操作,则使用 Watch 可以提供更好的响应式。

结论

Computed 和 Watch 是 Vue3 中用于处理响应式数据的两个强大机制。通过了解它们的差异和使用场景,我们可以有效地利用它们来构建响应式且高效的 Vue 应用程序。

在下一篇日志中,我们将继续探讨 Vue3 中的其它重要特性。欢迎继续关注!