Propiedades Computadas en Vue: Simplificación y Dinámica Reactiva

Clase 32 de 37Curso de Reactividad con Vue.js 3

Resumen

¿Qué son las propiedades computadas en Vue.js?

Las propiedades computadas son una poderosa herramienta en Vue.js que permite crear propiedades reactivas dentro de un componente. Estas propiedades calculadas, o computadas, se generan basándose en otras propiedades o valores reactivos, conocidos como dependencias. Esto significa que cuando una dependencia cambia, la propiedad computada se recalcula automáticamente, brindando eficiencia y simplicidad a la aplicación.

¿Cómo se crean propiedades computadas?

La creación de una propiedad computada es relativamente sencilla. Se definen dentro del objeto computed del componente en Vue.js y, básicamente, son funciones que retornan un valor. La magia surge cuando estas propiedades son capaces de observar otras reactivas dentro del componente y reajustarse dinámicamente al cambiar las dependencias subyacentes.

Aquí un ejemplo básico de una propiedad computada:

computed: {
  priceColor() {
    if (this.product.stock <= 1) {
      return 'red';
    }
    return 'blue';
  }
}

En este fragmento de código, priceColor es una propiedad computada que devuelve un color basándose en la cantidad de stock de un producto.

¿Por qué usar propiedades computadas en lugar de observadores (watchers)?

Aunque los observadores o watchers pueden realizar tareas similares, las propiedades computadas presentan diversas ventajas:

  • Simplicidad: Son más fáciles de leer y escribir comparadas con las funciones de observadores.
  • Eficiencia: Se recalculan automáticamente solo cuando sus dependencias cambian.
  • Integración limpia: Se comportan como propiedades simples, lo que facilita su integración en la plantilla del componente.

Mientras los observadores son apropiados para ejecutar tareas asíncronas o con efectos secundarios, las propiedades computadas se destacan al manipular datos dependientes de manera eficiente.

Ejemplo práctico: Cambiar color de precio y total del carrito

Consideremos un componente de producto que necesita cambiar el color del precio y calcular el total del carrito dinámicamente:

  1. Cambiar color del precio según el stock:

    computed: {
       priceColor() {
         return this.product.stock <= 1 ? 'red' : 'blue';
       }
    }
    

    Esta propiedad evalúa el stock del producto. Si es menor o igual a uno, el color cambia a rojo.

  2. Calcular el total del carrito:

    computed: {
       total() {
         return this.cart.reduce((acc, item) => acc + item.price * item.quantity, 0);
       }
    }
    

    Aquí, total es una función que suma el precio de los artículos en el carrito, multiplicando por su cantidad. Se recalcula siempre que algún elemento del carrito cambie.

¿Cómo difieren las propiedades computadas entre Options API y Composition API?

En Vue.js, existen dos formas principales de escribir componentes: Options API y Composition API. Las propiedades computadas tienen ligeras diferencias de manejo en cada uno, pero su funcionalidad básica sigue siendo la misma.

  • Options API: Las propiedades computadas se definen dentro de un objeto computed, como se mostró en los ejemplos anteriores.
  • Composition API: Aquí, se usa la función computed de Vue a nivel de importación de módulos para definir estas propiedades.

Aprender a usar propiedades computadas eficientemente puede simplificar tu código y mejorar el rendimiento de tus aplicaciones Vue.js. Sigue explorando estas herramientas para optimizar y modernizar tus proyectos.