VueJS

Comunicación entre componentes con Vue.js

Al trabajar con el framework Vue.js podemos dividir la lógica de las aplicaciones en componentes aislados e independientes; pero una cosa importante es la comunicación entre componentes.

En este post te mostraré cómo comunicar componentes usando $emit y $refs. En el primer caso usaremos $emit para comunicar al padre un evento, y en el segundo caso vamos a usar $refs para invocar a una función dentro del componente hijo.

Poniéndolo en otras palabras, primero veremos comunicación de componentes de hijo a padre, y después de padre a hijo. Gracias a esto vamos a llamar a una función de un componente desde otro componente usando Vue.js

Nota: esto funciona bien para componentes simples o para comunicación simple entre componentes; si quieres algo más complejo que involucre a más componentes puedes usar Vuex.

Comunicación hijo a padre

Para esto se utiliza $emit.

Veamos el primer caso en donde queremos informar al padre un evento. En mi caso mi componente se llama RegistrarAlumno, al guardar un alumno le informa al padre:

See the gist on github.

Invoco a $emit, el primer argumento es el nombre del evento y los siguientes argumentos son, valga la redundancia, argumentos que recibirá la función del padre.

En este caso estoy emitiendo el evento guardado y pasando el objeto alumno.

Dentro del padre utilizo el componente y espero el evento:

See the gist on github.

Fíjate en que estoy esperando el evento guardado con @guardado justo como se hace para escuchar, por ejemplo, @click.

Cuando el hijo me informe ese evento, llamaré a mi método llamado guardado dentro del padre, que está así:

See the gist on github.

Y así se hace la comunicación entre componente hijo a padre.

Notas sobre la comunicación componente hijo a padre

El componente hijo puede emitir varios eventos

Al emitir eventos no es necesario pasar datos, con el nombre del evento basta

Si el padre no escucha los eventos del hijo, no hay problema

Padre a hijo

Veamos ahora cómo invocar a una función de un componente hijo, desde el padre. Colocaré el ejemplo con el mismo componente.

Dentro del componente hijo tengo una función llamada saludo que recibe un argumento llamado nombre:

See the gist on github.

Tenemos, dentro del padre, al componente hijo. Pero ahora le he puesto un ref con el nombre de componente.

See the gist on github.

Ahora puedo invocar a cualquier método del componente usando $refs. Así:

See the gist on github.

No lo olvides: en este caso, componente es el ref del componente. Estoy invocando a la función saludo, que es un método dentro del componente hijo.

Por cierto, saludo recibe un argumento; pero podría recibir más, o podría no recibir argumentos.

Pasar datos al hijo

Ya vimos cómo comunicar componentes a través de funciones, pero para pasar atributos o valores a cada componente podemos usar las props en Vue.js.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Solución: Unable to extract uploader id con youtube-dl

En mi blog te he enseñado a usar youtube-dl para descargar vídeos con permiso del…

3 horas hace

Enviar foto a Telegram usando cURL y Bot

Siguiendo con los tutoriales que consumen la API de los Bots de Telegram con cURL…

3 horas hace

cURL y Telegram: enviar mensaje a Bot

En un post previo te enseñé a enviar un mensaje en nombre de un Bot…

6 horas hace

Impresora térmica con Telegram usando Bot

En este artículo te voy a mostrar una guía para imprimir en una impresora térmica…

10 horas hace

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

4 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

5 días hace

Esta web usa cookies.