Una aplicación moderna de menú de comida rápida que demuestra el poder del nuevo hook use() de React en Next.js 16.
La idea es poder consumir una API externa sin necesidad de hacer uso de los hooks useEffect y useState. Una manera más sencilla y moderna de manejar promesas en React.
- Hook
use()de React: Implementación del nuevo hook experimental para manejo de promesas - Next.js 16: Última versión con soporte para React 19
- Tailwind CSS: Diseño moderno y responsivo
- React Icons: Iconografía profesional
- API Externa: Consumo de datos desde
devsapihub.com
El hook use() es una nueva característica experimental de React que permite:
- Simplificación del Código: Elimina la necesidad de
useEffect+useStatepara fetching - Suspense Nativo: Funciona perfectamente con React Suspense
- Menos Boilerplate: Reduce significativamente la cantidad de código
- Mejor UX: Manejo automático de estados de carga
- Server Components: Compatible con componentes de servidor
function Menu() {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
fetch('/api/menu')
.then(res => res.json())
.then(setData)
.catch(setError)
.finally(() => setLoading(false));
}, []);
if (loading) return <div>Cargando...</div>;
if (error) return <div>Error: {error.message}</div>;
return <MenuList data={data} />;
}function Menu() {
const data = use(fetchMenu()); // ¡Solo una línea!
return <MenuList data={data} />;
}# Clonar el repositorio
git clone <repo-url>
# Instalar dependencias
npm install
# Ejecutar en desarrollo
npm run dev
# Construir para producción
npm run build- Suspense envuelve el componente FastFoodMenu
- Hook
use()ejecuta la promesa de fetchMenu() - Suspense muestra el fallback mientras se resuelve
- Componente se renderiza con los datos obtenidos
- Código más limpio: Menos líneas, más legible
- Mejor performance: Optimizaciones automáticas
- Error boundaries: Manejo de errores simplificado
- Concurrent features: Compatible con React 18+ features
- Future-proof: Preparado para el futuro de React
