Consumir datos desde un archivo JSON en React es una habilidad clave para manejar y mostrar información dinámica en tus aplicaciones web. Aprender a integrar y procesar estos datos te permite crear experiencias interactivas y fluidas, optimizando la comunicación entre tu frontend y las fuentes de datos externas.
Abre tu terminal y ejecuta:
npm create vite@latest consumir-data-desde-un-archivo-json
cd consumir-data-desde-un-archivo-json
npm install
Crea la siguiente estructura de archivos:
consumir-data-desde-un-archivo-json/
│
├── src/
│ ├── datos.json
│ ├── components/
│ │ └── JsonDataLoader.jsx
│ └── App.jsx
└── package.json
En src/datos.json
:
[
{
"nombre": "Elena Gómez",
"edad": 28,
"profesion": "Desarrolladora Web"
},
{
"nombre": "Diego Martínez",
"edad": 35,
"profesion": "Diseñador UX"
},
{
"nombre": "Ana Rodríguez",
"edad": 42,
"profesion": "Gerente de Proyectos"
}
]
En src/components/JsonDataLoader.jsx
, crea el siguiente componente para cargar y mostrar los datos del archivo JSON:
import { useState, useEffect } from "react";
import data from "../datos.json";
const JsonDataLoader = () => {
const [usuarios, setUsuarios] = useState([]);
useEffect(() => {
// Simula la carga de datos desde un archivo JSON
setUsuarios(data);
}, []);
return (
<div>
<h2>Lista de Usuarios</h2>
<ul>
{usuarios.map((usuario, index) => (
<li key={index}>
<strong>{usuario.nombre}</strong>, {usuario.edad} años - {usuario.profesion}
</li>
))}
</ul>
</div>
);
};
export default JsonDataLoader;
Este componente utiliza el hook useState
para almacenar los datos y el hook useEffect
para cargarlos cuando el componente se monta.
import JsonDataLoader from './components/JsonDataLoader'
function App() {
return (
<div className="App">
<JsonDataLoader />
</div>
)
}
export default App;
Existen varios métodos para cargar datos en React, dependiendo de tus necesidades y preferencias. A continuación, exploramos dos de las formas más comunes para consumir datos desde un archivo JSON en tus aplicaciones.
fetch
(Recomendado para datos locales o externos):El método fetch
es una forma nativa de realizar solicitudes HTTP en JavaScript.
Es especialmente útil para obtener datos de archivos JSON o APIs externas.
A continuación te mostramos cómo cargar los datos desde un archivo JSON utilizando fetch
.
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch('/datos.json');
const jsonData = await response.json();
setData(jsonData); // Almacenamos los datos en el estado
setLoading(false); // Desactivamos el estado de carga
} catch (err) {
setError('Error al cargar datos'); // Capturamos cualquier error
setLoading(false); // Desactivamos el estado de carga en caso de error
}
};
fetchData();
}, []);
Estamos utilizando el hook useEffect
para cargar los datos al montar el componente.
Se realiza una solicitud a datos.json
y se manejan tanto los datos como los errores.
Si prefieres usar una librería externa para realizar solicitudes HTTP, Axios es una opción popular. Ofrece más funcionalidades como interceptores y una sintaxis más limpia para manejar errores y respuestas.
Primero, instala Axios:
npm install axios
Luego, utiliza el siguiente código para cargar los datos desde el archivo JSON usando Axios:
import axios from 'axios';
useEffect(() => {
const fetchData = async () => {
try {
const response = await axios.get('/datos.json');
setData(response.data); // Almacenamos los datos en el estado
setLoading(false); // Desactivamos el estado de carga
} catch (err) {
setError('Error al cargar datos'); // Capturamos cualquier error
setLoading(false); // Desactivamos el estado de carga en caso de error
}
};
fetchData();
}, []);
Con Axios, la sintaxis es muy similar, pero tiene la ventaja de manejar automáticamente la conversión de la respuesta a JSON y permite un control más fino sobre las solicitudes HTTP.