Cargar datos desde Vue con Fetch o Axios (Inertia)
Categories:
🌐 Cargar datos desde Vue con Fetch o Axios (Inertia.js)
Cuando los datos son muy grandes o cambian frecuentemente, es mejor no enviarlos como props con Inertia y en su lugar, consultarlos desde el frontend usando fetch o axios.
❓ ¿Por qué hacerlo así?
Enviar grandes cantidades de datos como props (por ejemplo, Project::all()) hace que:
- El tiempo de carga aumente
- La respuesta JSON de Inertia sea pesada
- Sea difícil hacer filtros/paginación en frontend
✅ Solución: usar fetch() o axios desde Vue
En lugar de pasar los datos con Inertia:
1. Crea una ruta API en Laravel
|
|
2. En tu componente Vue, carga los datos
Opción A: usando fetch
|
|
Opción B: usando axios
Primero instálalo:
|
|
Luego:
|
|
3. Mostrar los datos en el <template>
|
|
🔐 ¿Problemas con autenticación?
Si la API requiere que el usuario esté autenticado:
- Las rutas de
api.phpusan el middlewareapi(sin sesión) - Puedes mover la ruta a
routes/web.phpy protegerla conauth
|
|
✅ Ventajas
- ⚡ Menos peso inicial al montar Inertia
- 🔄 Más fácil hacer filtros, scroll infinito, paginación…
- ♻️ Puedes reutilizar la misma API para otras interfaces (ej. móvil)
¿Te gustaría una página extra sobre cómo usar esta técnica junto a paginación o scroll infinito?