Ciclos de vida en Vue: cuándo y cómo cargar datos

Clase 34 de 37Curso de Reactividad con Vue.js 3

Resumen

Domina los ciclos de vida en Vue para controlar cuándo inicializar datos, renderizar y actualizar tu interfaz. Aquí verás cómo aprovechar created para cargar productos desde una API sencilla, pasar de una lista estática a datos dinámicos y comprender qué sucede “antes”, “durante” y “después” del montaje en el DOM.

¿Qué es el ciclo de vida en Vue y por qué importa?

Comprender los ciclos de vida permite ejecutar lógica en el momento justo: antes de que exista la reactividad, cuando ya está lista pero aún no se monta en el DOM, tras el montaje y cada vez que cambian los datos. La analogía de la receta guía la idea: pasos claros para llegar a un resultado.

¿Cómo ayuda la analogía de receta a entenderlo?

  • Ingredientes: datos reactivos que pueden cambiar.
  • Preparación: métodos y propiedades computadas que transforman o responden a cambios.
  • Pasos de la receta: hooks del ciclo de vida que ordenan la ejecución.
  • Resultado: el componente montado y actualizado en el DOM.

¿Cómo se ejecutan los hooks y qué permite cada uno?

Vue inicializa eventos y el ciclo de vida del componente, y luego activa cada fase. Entender el orden te ayuda a decidir dónde cargar datos, dónde leer el DOM y cuándo reaccionar a cambios.

¿Qué ocurre en beforeCreate y created?

  • beforeCreate: se inicia el componente, aún sin reactividad disponible. No accedas a data.
  • created: ya existe la reactividad; Vue creó los proxies y puedes leer y mutar data. Útil para cargar información externa antes del montaje.

¿Qué pasa antes y después del montaje?

  • beforeMount: Vue valida cómo se renderizará en el DOM.
  • mounted: el componente ya está en el DOM. Ideal para tareas que requieren nodos del DOM listos.

¿Cómo funcionan las actualizaciones y el desmontaje?

  • beforeUpdate y updated: cuando cambian datos reactivos, se recalculan partes y se actualiza la vista.
  • Desmontaje: al cerrar una pestaña o cambiar de ruta, el componente se destruye. Existen hooks para ejecutar limpieza en ese momento.

¿Cómo cargar datos desde una API con Options API y created?

La transición de una lista estática a datos dinámicos se logra en created, donde ya puedes usar la reactividad sin depender del DOM. La propuesta usa un servicio de ejemplo para simular una API.

¿Qué servicio y estructura se utilizan?

  • MyJSON Server: crea una API de prueba desde un repositorio con un db.json.
  • Repositorio: forkea “Samuel Demo” y ajusta db.json con tus productos.
  • URL de la API: basada en usuario y nombre del repositorio. Existen endpoints como “products” y “db”.

¿Cuál es el flujo para llenar productos desde la API?

  • Vacía la lista de productos inicial.
  • En created, realiza un fetch a la URL del endpoint correcto (por ejemplo, products).
  • Convierte la respuesta a JSON y toma la propiedad de datos esperada.
  • Asigna el resultado a this.products, aprovechando que data ya está disponible en created.

¿Cómo validar el orden de ejecución y resolver errores comunes?

  • Usa console.log en cada hook para verificar el orden: verás beforeCreate, luego created, y así sucesivamente.
  • Si ves errores de ruta, confirma el endpoint específico (por ejemplo, “/products” en lugar de la raíz).
  • Revisa que las imágenes, nombres y precios cambien en la interfaz tras el montaje, indicando que los datos se cargaron bien.

Palabras clave y habilidades trabajadas: ciclo de vida, beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, reactividad, proxies, DOM, Options API, cargar datos externa, MyJSON Server, db.json, repositorio, URL, endpoint, fetch, this.products, data, depuración con console.log. Como siguiente paso, se introducen diferencias clave con Composition API para trabajar estos hooks de otra forma.

¿Tienes dudas sobre en qué hook colocar cierta lógica o cómo estructurar la carga de datos? Cuéntame tu caso y lo revisamos juntos.