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:

HTTP.post("/alumno", this.alumno)
.then(() => {
    this.$emit("guardado", this.alumno)//<-- Justo aquí
})
.finally(() => this.cargando = false);

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:

<RegistrarAlumno @guardado="guardado"/>

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í:

methods: {
  guardado(alumno) {
    // TODO: hacer algo con alumno
  },
}

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:

methods: {
    //...
    saludo(nombre){
        alert("Hola " + nombre);
    }
  //...
}

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

<RegistrarAlumno ref="componente"/>

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

this.$refs.componente.saludo("Luis");

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

3 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

4 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

3 semanas hace

Esta web usa cookies.