react-puro-19
  • React Puro - 19
  • code
    • README
    • README
    • README
    • README
    • README
    • README
    • README
    • README
  • 7-state-en-clases
    • Ejemplo inicial: un contador
    • Manejo de eventos
    • El state
    • Sintaxis limpia en Class Components
    • setState es Asincrónico
    • Fusión superficial vs profunda
  • 5-children
    • Personalizar Children antes de renderizar
    • PropTypes para Children
    • Los Children
    • Diferentes tipos de Children
    • Manejando uso Children
  • 13-hook-usereducer
    • Qué es un Reducer?
    • Un ejemplo más practico
    • Entonces, Redux murió?
  • 4-proptypes
    • Documentación y depuración incluida
    • PropTypes como documentación
    • Cómo validar, formas comunes
    • Ejemplo Tweet con PropTypes
  • 3-props
    • Comunicación con componentes Padre
    • Las Props:
    • Pasar Props
    • Recibir Props
    • Ejemplo Tweet con Props
  • 11-pensando-uso-state
    • "Tipos" de componentes
    • Qué colocar en el State
    • Dónde mantener el estado
    • Pensando declarativamente
  • 9-requests-api
    • Intro
    • Eligir libreria HTTP
    • Obtener datos y mostrarlos
  • 10-state-en-funciones
    • El useState Hook
    • Actualizar State basado en State anterior
    • State como un Array
    • Reglas de los Hooks
    • La "magia" de los Hooks
    • State como un Objeto
    • Intro Hooks
  • 15-api-context
    • Usando React API Context
    • Patrón "Slots"
    • Patrón "Render Props"
    • Intro API Context
    • Otros Patrones de Context
    • Ejemplo perforación de props
    • hook_usecontext
  • 8-ciclo-vida-componente
    • Fases
    • El ciclo
    • Manejo de errores
    • Desmontaje
    • Representación
    • Montaje
  • 14-hook-useeffect
    • Límite cuando se ejecuta un Effect
    • Hacer cambios visibles del DOM
    • Obtener datos (Fetch) con useEffect
    • Intro useEffect
    • Re-obtener datos (Re-Fetch) cuando cambian
    • Solo ejecución en montaje y desmontaje
  • 2-jsx
    • Ejemplo componente Tweet:
    • JSX:
    • Trabajando con JSX:
  • 12-controles-entrada
    • Entradas controladas
    • Entradas no controladas
  • 6-github-file-list
    • Parte 2: la Prop 'key'
    • Parte inicial
  • 1-hola_mundo
    • Hola mundo:
Con tecnología de GitBook
En esta página
  • Axios
  • Fetch

¿Te fue útil?

  1. 9-requests-api

Eligir libreria HTTP

AnteriorIntroSiguienteObtener datos y mostrarlos

Última actualización hace 5 años

¿Te fue útil?

Para obtener datos del servidor, se necesitará una libreria HTTP. Hay varias por ahí en la comunidad. En definitiva, todas hacen lo mismo, pero tienen características diferentes.

Axios

La favorita de muchos es . Utiliza Promises, analiza/convierte automáticamente JSON por uno mismo y trata los códigos de respuesta que no son 200 como errores. También da como resultado un código menos detallado para operaciones que no son GET como POST/PUT/PATCH/etc. Un inconveniente es que es una libreria adicional para instalar que no viene integrada.

Ejemplo de código usando axios para obtener algunos datos de reddit:

import axios from 'axios';

axios.get(`http://www.reddit.com/r/reactjs.json`)
.then(response => {
    const posts = response.data.data.children.map(
        obj => obj.data
    );
    console.log(posts);
})
.catch(error => {
    console.error(error);
});

Observar que no hay código específico de React. Este mismo código podría obtener datos en cualquier aplicación sobre JS. Una vez que se reciban los datos, pueden colocarse en el state y renderizarlos desde allí. Asi se confirma que React no sabe nada sobre la obtención de datos.

Fetch

Otra buena opción es la función fetch() integrada en los navegadores modernos. La API Fetch es parte del estándar de JavaScript. Se requiere un paso adicional para analizar/convertir las respuestas JSON, y trata básicamente cada respuesta como exitosa, incluidas las 404 y 500, por lo que el manejo de errores implica un poco más de código. También es más detallada si se necesita hacer una operación POST/PUT/DELETE u otra operación que no sea GET.

La misma llamada a Reddit, pero esta vez usando fetch:

// no se necesita importar nada

fetch(`http://www.reddit.com/r/reactjs.json`)
.then(response => {
    if (response.ok){
        return response.json();
    }
    throw new Error('Request failed');
})
.then(json => {
    const posts = res.data.data.children.map(
        obj => obj.data
    );
    console.log(posts);
})
.catch(error => {
    console.error(error);
});

Algunos navegadores no tienen la función de fetch disponible. Para aquellos, la aplicación Create React agrupa el de fetch, por lo que se puede estar seguro de que fetch estará disponible cuando se ejecute el código.

axios
polyfill