Aprende a conectar componentes en Vue.js con confianza: de padre a hijo usando props reactivas e inmutables, y de hijo a padre con eventos. Verás cómo estructurar un componente de pista musical con Bulma, corregir el binding con v-bind, optimizar rutas con un alias en webpack y mejorar la UX con un loader controlado por v-show.
¿Cómo se comunican los componentes en Vue.js con props y eventos?
La comunicación fluye en dos direcciones, pero con mecanismos distintos.
Padre → hijo con props: se envía data por atributos tipo HTML. Son reactivas e inmutables en el hijo. No se deben mutar en el hijo.
Hijo → padre con eventos: el hijo emite y el padre escucha. Se verá en la siguiente parte, pero conviene distinguirlo desde ahora.
Reactividad: las props se comportan como data, actualizan la vista cuando cambian en el padre.
Inmutabilidad en el hijo: preserva el flujo de datos limpio y la coherencia del estado.
Binding correcto: usa v-bind o : para pasar valores no literales; sin ello, se envía un string.
Habilidades puestas en práctica: manejo de props, reactividad, inmutabilidad, binding con v-bind, depuración con DevTools de Vue, y lectura de estructuras anidadas que llegan desde una API.
¿Cómo construir y alimentar el componente de track?
Se crea track.vue con el esqueleto de un card de Bulma para mostrar imagen, título, artista y duración. Además, se define la prop track como requerida.
exportdefault{components:{PmLoader},data(){return{isLoading:false}}// Al iniciar la búsqueda: this.isLoading = true// Al finalizar la búsqueda: this.isLoading = false}
v-show es ideal cuando se alterna visibilidad con frecuencia, evita montar/desmontar nodos.
El scope de isLoading es del componente padre; los hijos no necesitan conocerlo.
Además, el grid de Bulma mejora la UI en desktop sin perder mobile: