Observadores Personalizados con Watchers en Vue.js
Clase 30 de 37 • Curso de Reactividad con Vue.js 3
Contenido del curso
- 6

Paradigma de Reactividad: Conceptos y Aplicaciones Prácticas
03:49 - 7

Creación de Framework Reactivo con Proxies en JavaScript
06:29 - 8

Creación de un Mini Framework Reactivo desde Cero
07:04 - 9

Programación Reactiva con Proxies en JavaScript
06:06 - 10

Uso de Reflect para Simplificar Proxies en JavaScript
09:29 - 11

Programación Reactiva: Efectos, Track y Trigger en JavaScript
03:53 - 12

Reactividad en JavaScript: Efectos, Trackers y Triggers
07:39
- 13
Templates de HTML en Vue.js: Mejores Prácticas Esenciales
00:21 - 14

Implementación de Vue.js en Proyecto eCommerce Reactivo
06:53 - 15

Expresiones
06:49 - 16

Atributos Dinámicos en Vue.js: Uso de Clases y Estilos Reactivos
06:08 - 17

Rendering Condicional en View.js: Uso de v-show y v-if
08:53 - 18

Renderizado de Listas en HTML con VueJS
08:14 - 19

Eventos y Dinamismo en Templates HTML con Vue JS
06:49
- 25

Creación de Componentes en Vue para Aplicaciones Modulares
06:56 - 26

Conexión de Datos entre Componentes en VueJS: Usando Props y Composition API
14:13 - 27
Creación de Componentes Personalizados en Aplicaciones Web
00:37 - 28

Creación de Eventos Personalizados en Vue para Comunicación entre Componentes
04:28 - 29

Eventos personalizados con Composition API en Vue.js
03:57 - 30

Observadores Personalizados con Watchers en Vue.js
08:53 - 31

Creación de Observadores Personalizados en Vue Composition API
08:19 - 32

Propiedades Computadas en Vue: Simplificación y Dinámica Reactiva
05:17 - 33

Propiedades Computadas con Composition API en Vue.js
06:20 - 34

Ciclos de Vida en Vue.js: Uso Práctico y Carga de Datos desde API
08:19 - 35

Ciclos de Vida en Composition API de Vue.js
06:03
¿Cómo crear observadores o "watchers" personalizados en Vue?
Vue, a través de su Options API, nos ofrece la herramienta necesaria para crear lo que se denominan "watchers" u observadores personalizados. Estos nos permiten detectar y reaccionar a cambios en propiedades reactivas en tiempo real. Vamos a explorar cómo puedes crear y utilizar estos observadores de manera efectiva en tus aplicaciones Vue.
El objetivo es cambiar automáticamente el color de nuestro elemento de precio basado en la cantidad de productos en stock.
¿Cómo asociar propiedades de estilo con el data?
Para empezar a trabajar con los estilos dinámicos, primero se debe crear una propiedad dentro del objeto data en Vue. Supongamos que queremos cambiar el color de un texto en función del stock disponible de un producto. Tenemos que crear una propiedad llamada priceColor y asignarla inicialmente a un valor RGB.
data() {
return {
priceColor: 'rgb(0, 0, 255)' // Un color azul por defecto
};
}
¿Cómo observar cambios en las propiedades reactivas?
Los observadores permiten ofrecer respuestas automáticas ante cambios en las dependencias. Al crear un watcher, especificamos la propiedad que se debe vigilar. Aquí se usa la API de options para monitorear cambios en el stock del producto.
watch: {
'product.stock': function(newValue, oldValue) {
console.log(newValue); // Imprime el stock actual en consola
if (newValue <= 1) {
this.priceColor = 'rgb(255, 0, 0)'; // Cambia el color a rojo si el producto está escaso
}
}
}
¿Qué ocurre al utilizar el objeto de carrito con un watcher más avanzado?
La funcionalidad reactiva de Vue no solo se limita a cambios simples. También puedes monitorear arreglos complejos, como un carrito de compras, e implementar acciones cada vez que se añaden productos.
watch: {
cart: {
handler(newCart) {
this.total = newCart.reduce((total, product) => {
return total + product.price * product.quantity;
}, 0);
},
deep: true // Observa cambios profundos en los objetos del carrito
}
}
El uso de deep: true en este escenario se encarga de monitorear cada objeto y sub-propiedad dentro del array, asegurando que el total se actualice correctamente cada vez que los productos en el carrito cambian de alguna manera.
¿Cómo podemos utilizar la internacionalización para formatear el valor total?
Además de cambiar el producto mediante observadores, puedes usar herramientas como la internacionalización de JavaScript para dar formato monetario al total de las compras:
computed: {
formattedTotal() {
return new Intl.NumberFormat('es-CO', { style: 'currency', currency: 'COP' }).format(this.total);
}
}
Esto convierte automáticamente el total numérico en un formato de moneda estandarizado, mejorando la experiencia del usuario con la interfaz.
Con estos pasos, no solo puedes crear aplicaciones interactivas, sino también reaccionar de manera eficiente a los cambios en los datos, ofreciendo una interfaz de usuario reactiva y dinámica. Aprovecha estas herramientas para enriquecer tus proyectos en Vue y brindar una experiencia única a los usuarios. ¡Sigue explorando las posibilidades que Vue tiene para ofrecer!