Creación de Eventos Personalizados en Vue para Comunicación entre Componentes
Clase 28 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 eventos personalizados en Vue.js?
Los eventos son una herramienta poderosa en Vue.js, permitiendo una comunicación eficaz entre componentes. Si estás trabajando con componentes de Vue y necesitas pasar información de un componente hijo a un padre, los eventos personalizados son la solución perfecta. A continuación, te mostramos cómo puedes crear y utilizar estos eventos dentro de tus aplicaciones Vue de manera eficiente.
¿Qué es un evento personalizado en Vue.js?
Un evento personalizado en Vue permite enviar datos o señales de un componente hijo a un componente padre. Esto es útil cuando necesitas que el padre responda a ciertas interacciones o cambios ocurridos en el hijo, como cuando un producto es añadido al carrito de compras.
¿Cómo definir un evento personalizado?
-
Definir el evento utilizando
emits: En un componente Vue, para crear un nuevo evento, usaremos la opciónemits. Esta opción es similar apropsy nos permite especificar los nombres de los eventos personalizados que el componente puede emitir.export default { emits: ['sendToCart'], methods: { addToCart(product) { this.$emit('sendToCart', product); } } }En este ejemplo, definimos un evento llamado
sendToCart. Luego, dentro del métodoaddToCart, utilizamosthis.$emit('sendToCart', product);para emitir el evento y pasar el producto al componente padre.
¿Cómo escuchar un evento desde el padre?
En el componente padre, utilizamos v-on o su versión corta con @ para escuchar eventos. Al recibir el evento, podemos ejecutar una función que maneje la actualización deseada, como agregar el producto al carrito.
<product-item @sendToCart="handleAddToCart"></product-item>
<script>
export default {
methods: {
handleAddToCart(product) {
// Lógica para añadir el producto al estado del carrito
}
}
}
</script>
¿Cómo manejar la reactividad al usar eventos personalizados?
Una de las ventajas de Vue.js es su capacidad para mantener todo reactivo. Cuando un estado cambia, la UI se actualiza automáticamente. Inicializar y escuchar eventos personalizados no interfiere con esta reactividad. Así, cada vez que se agrega un producto, el estado del carrito se actualiza y cualquier cambio, como aplicar un descuento, se refleja instantáneamente en la interfaz de usuario.
Ejemplo práctico de uso
Imagina que tienes un listado de productos y cada uno tiene un botón para añadirlo al carrito.
-
Componente hijo (Producto):
<template> <div> <button @click="addToCart(product)">Añadir al carrito</button> </div> </template> <script> export default { emits: ['sendToCart'], methods: { addToCart(product) { this.$emit('sendToCart', product); } } } </script> -
Componente padre:
<template> <div> <product-item v-for="product in products" :key="product.id" @sendToCart="handleAddToCart(product)"></product-item> </div> </template> <script> export default { methods: { handleAddToCart(product) { this.cart.push(product); } } } </script>
En este ejemplo, cada vez que se hace clic en "Añadir al carrito", el producto se añade al carrito del componente padre mediante el evento emitido.
¿Qué sigue después de dominar los eventos personalizados?
Una vez que hayas aprendido a usar eventos personalizados con el Options API en Vue, el siguiente paso es explorar cómo hacer lo mismo pero utilizando la Composition API. Esto no solo ampliará tu conocimiento de Vue, sino que también mejorará la solidez y mantenibilidad de tus aplicaciones. ¡Adéntrate en el fascinante mundo de Vue.js y sigue practicando para convertirte en un experto desarrollador front-end!