Vue2 中 computed、methods、watch 的区别及在 Vue3 中的变化

目录

Vue2 中 computed、methods、watch 的区别及在 Vue3 中的变化

一、Vue2 中三者的区别

(一)computed 与 methods 的区别

(二)computed 与 watch 的区别

二、Vue3 中的变化

(一)Composition API

(二)性能优化

三、总结


在 Vue 开发中,computedmethodswatch是三个常用的特性,它们在实现功能上有相似之处,但也存在着一些明显的区别。

一、Vue2 中三者的区别

(一)computed 与 methods 的区别

  1. 功能相似性:两者都可以实现返回特定值的功能。例如在示例中,无论是通过计算属性computed还是方法methods,都可以对数据进行处理并返回结果。
  2. 缓存特性
    • computed是基于响应式进行依赖缓存的。如果计算属性的依赖值没有发生变化,那么它会直接使用缓存的结果,不会重复执行计算逻辑。在示例中,多次调用计算属性,控制台只打印了一次结果,说明后续调用走了第一次的缓存。
    • methods没有缓存,每次调用都会执行相应的方法。在示例中,多次调用方法,控制台会打印出相应次数的结果。

在性能方面,在简单情况下如果多次使用且依赖值不发生变化,computed的性能要比methods好。但在特殊情况,如点击按钮跳转页面等需要执行特定行为的场景,就需要使用methods

(二)computed 与 watch 的区别

  1. 触发方式
    • watch是一个监听属性,只有当被监听的数据发生改变时才会触发内部的代码执行。在示例中,监听number的变化,只有当number的值发生改变时,控制台才会打印出新旧值,并执行相应的逻辑。
    • computed不需要数据发生改变就可以返回结果,只要其依赖的响应式数据存在,就会根据依赖关系自动计算并返回结果。
  2. 使用场景
    • 对于计算总价的场景,如果使用computed,可以直接根据单价和数量计算出总价,并且只要单价或数量发生变化,总价会自动更新。而使用watch,需要监听单价或数量的变化,然后手动计算总价并更新。
    • 如果需要监听路由的变化,watch更加方便,可以直接监听路由的变化并执行相应的逻辑。

二、Vue3 中的变化

在 Vue3 中,computedmethodswatch的基本概念和用法与 Vue2 相似,但也有一些变化和改进。

(一)Composition API

Vue3 引入了 Composition API,使得代码的组织更加灵活和可维护。在 Composition API 中,可以使用setup函数来定义组件的逻辑,并且可以更好地利用computedmethodswatch

例如,以下是使用 Vue3 Composition API 的示例代码:

<template>
  <div>
    <p>Total: {{ total }}</p>
    <input v-model="number" />
    <input v-model="price" />
  </div>
</template>

<script>
import { ref, computed, watch } from 'vue';

export default {
  setup() {
    const number = ref(2);
    const price = ref(10);
    const total = computed(() => number.value * price.value);

    watch([number, price], ([newNumber, newPrice]) => {
      total.value = newNumber * newPrice;
    });

    return {
      number,
      price,
      total,
    };
  },
};
</script>

在这个示例中,使用ref定义响应式变量,computed计算总价,watch监听数量和单价的变化并更新总价。

(二)性能优化

Vue3 在性能方面进行了一些优化,例如对响应式系统的改进和编译器的优化。这些优化也会影响到computedmethodswatch的性能表现。

总的来说,在 Vue3 中,computedmethodswatch仍然是非常重要的特性,并且在 Composition API 的支持下,代码的组织和维护更加方便。同时,Vue3 的性能优化也使得这些特性的性能表现更加出色。

三、总结

computedmethodswatch在 Vue2 和 Vue3 中都有各自的特点和用途。在实际开发中,需要根据具体的需求选择合适的特性来实现功能。了解它们的区别和使用场景,可以帮助我们更好地开发 Vue 应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值