Eventos personalizados en Vue: comunicar hijo a padre
Clase 28 de 37 • Curso de Reactividad con Vue.js 3
Contenido del curso
Reactividad a profundidad
- 6

Paradigma reactivo: responsivo, resiliente y escalable
03:49 min - 7

Proxies: la clave de la reactividad Vue
06:29 min - 8

Creando tu primer mini framework reactivo
07:04 min - 9

Integrar Proxy para crear mini framework reactivo
06:06 min - 10

Refleja tu lógica mantenible con JavaScript
09:29 min - 11

Conceptos clave de reactividad: efectos, track y trigger
03:53 min - 12

Efectos trackers triggers: cómo Vue vincula datos
07:39 min
Templates de Vue.js
- 13
Templates de HTML en Vue.js: Mejores Prácticas Esenciales
00:21 min - 14

Estructura inicial de Platzy Commerce con Vue
06:52 min - 15

Expresiones JavaScript en templates Vue
06:49 min - 16

v-bind y clase reactiva en Vue.js
06:08 min - 17

v-show vs v-if en Vue: cuándo usar cada uno
08:53 min - 18

Directiva v-for para listas en Vue.js
08:14 min - 19

Eventos con v-on en templates de Vue
06:49 min
APIs internas de Vue.js
Segunda capa: componentes de Vue.js
- 25

Crear componentes reutilizables con Vue
06:56 min - 26

Cómo pasar datos de padre a hijo en Vue
14:13 min - 27
Creación de Componentes Personalizados en Aplicaciones Web
00:37 min - 28

Eventos personalizados en Vue: comunicar hijo a padre
Viendo ahora - 29

Eventos personalizados con Composition API
03:57 min - 30

Watchers en Vue Options API
08:53 min - 31

Watchers en Vue Composition API
08:19 min - 32

Computed properties vs watchers en Vue
05:17 min - 33

Computed en Vue Composition API
06:20 min - 34

Ciclos de vida en Vue: cuándo y cómo cargar datos
08:19 min - 35

Ciclos de vida en Composition API
06:03 min
Siguientes pasos
Crear eventos personalizados en Vue con la Options API permite resolver errores comunes de estado y habilitar una comunicación clara de hijo a padre. Aquí verás cómo usar emits, la función interna emit, y cómo escuchar el evento en el padre con v-on (o @) para que funciones como add to cart trabajen con datos correctos y mantengan la reactividad.
¿Cómo se soluciona el error de add to cart desde el hijo?
Intentar ejecutar add to cart desde el hijo fallaba porque accedía a estado no disponible en ese componente: el estado vive en el padre. La solución es mover la inserción al padre y, desde el hijo, emitir un evento con el producto.
- Crear en el hijo un método llamado send to cart que no muta estado.
- En el padre, mantener add to cart para insertar en el estado global de la aplicación.
- Pasar el producto como parámetro: el padre recibe y agrega al carrito.
- Evitar referencias como this.product en el hijo: usar el parámetro product.
- Continuar usando eventos de JavaScript nativos como click, mouseover, mouseenter o keyup cuando apliquen.
¿Qué cambia en el método add to cart?
- Ahora recibe un producto como argumento.
- Deja de leer del estado interno del hijo.
- Inserta directamente el producto recibido en el carrito del padre.
¿Cómo definir y emitir eventos personalizados con emits y emit?
Para comunicar del hijo al padre se define un evento propio con la opción emits y luego se dispara con emit desde un método.
- Declarar en el componente hijo la opción emits con el nombre del evento: send to cart.
- Implementar el método send to cart en el hijo.
- Usar la función interna emit para emitir el evento con un payload.
- Enviar como payload el producto, tal como se acordó.
- Mantener el mismo nombre del evento en emits y al emitir.
¿Qué datos viajan en el evento?
- Viaja el producto en sí mismo como información del evento.
- El padre lo recibe y lo inserta en el carrito mediante add to cart.
¿Cómo escuchar el evento con v-on (@) y mantener la reactividad?
En la vista del padre, donde se recorre la lista de productos, el componente hijo ahora expone un evento personalizado. Se escucha con v-on o con el atajo @ y se ejecuta la función del padre.
- Escuchar el evento del hijo: @send to cart.
- Ejecutar add to cart al ocurrir el evento.
- Pasar $event: Vue reemplaza por el producto emitido.
- Todo sigue siendo reactivo: descuentos aplicados en el hijo se reflejan en el padre.
- Agregar múltiples productos funciona de forma consistente.
- Aplicar códigos de descuento a distintos productos mantiene el estado coherente.
¿Tienes dudas sobre emits, emit, v-on o la separación entre hijo y padre al manejar el carrito? Comparte tu caso en los comentarios y lo revisamos juntos.