La api esta caida :c
Introducción
¿Por qué usar Webpack?
Presentación del proyecto en React.js: PlatziStore
Webpack en el Backend
Instalación y configuración de Express.js
Configuración de Webpack para Express.js
Configuración de TypeScript
Preparar la API Rest con Express.js
Webpack en el Frontend
Migracion de Webpack 4 a Webpack 5
Configuración inicial de Webpack para PlatziStore
Cómo integrar la API de Platzi Store
Integrando la API de Platzi Store
Webpack Alias
Manejo de assets en Webpack
Optimización de imágenes con Webpack y CDN
Integración con TypeScript
Hot Reload
Lazy Loading
Code Splitting en desarrollo
Code Splitting en producción
Despliegue
Deploy de React en Netlify
Deploy de Express en Heroku
Comprar y conectar un dominio
Próximos pasos con Webpack
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Oscar Barajas Tavares
Aportes 7
Preguntas 1
La api esta caida :c
Para el manejo de peticiones asíncronas con Async/Await
usamos el plugin @babel/plugin-transform-runtime
.
npm i @babel/plugin-transform-runtime -D
https://us-central1-gndx-fake-api.cloudfunctions.net/api
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"babel-plugin-transform-class-properties",
"@babel/plugin-transform-runtime"
]
}
App.jsx:
import React from 'react';
import { BrowserRouter, Switch, Route } from 'react-router-dom';
import Home from '../containers/Home';
import Checkout from '../containers/Checkout';
import Layout from '../components/Layout';
import NotFound from '../containers/NotFound';
import useInitialState from '../hooks/useInitialState';
const App = () => {
const initialState = useInitialState();
const isEmpty = Object.keys(initialState.products).length;
return (
<>
{isEmpty > 0 ? (
<BrowserRouter>
<Layout>
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/checkout" component={Checkout} />
<Route component={NotFound} />
</Switch>
</Layout>
</BrowserRouter>
) : <h1>Loading ...</h1>}
</>
)
}
export default App;
useInitialState.js :
import { useEffect, useState } from 'react';
import axios from 'axios';
const API = 'https://us-central1-gndx-fake-api.cloudfunctions.net/api';
const useInitialState = () => {
const [products, setProducts] = useState([]);
useEffect(async () => {
const response = await axios(API);
setProducts(response.data);
}, []);
return {
products,
}
}
export default useInitialState;
Buenas! Les dejo mi versión del hook useInitialState.
Este hook no utiliza la librería Axios por lo cual no hay necesidad de instalarla.
Espero les ayude 😃
import { useState, useEffect} from "react";
const API= "https://us-central1-gndx-fake-api.cloudfunctions.net/api";
const useInitialState = () => {
try {
const [products, setProducts] = useState([]);
useEffect(async () => {
const response = await fetch(API);
const data = await response.json();
setProducts(data);
}, []);
return {
products
};
} catch (error) {
return {
products: [],
error: typeof error === "object" ? error.message : error
}
}
}
export default useInitialState;
Recuerden añadir la carpeta dist al archivo .gitignore para que no suban esta carpeta a su repositorio remoto
Si no les fuinciona la API que está en los recursos pueden usar la nueva API de Platzi en: https://fakeapi.platzi.com/ El objeto json que retorna es un poco diferente, pero funcionará: Aquí el endpoint: https://api.escuelajs.co/api/v1/products
La API a no funciona 😦
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?