Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

168
Vistas
Await fetch devuelve 2 matrices y los datos no se pueden usar

Estoy trabajando en un proyecto de pila completa usando Express en el back-end y reacciono en el front-end. Ahora el problema es con un componente específico. Se supone que obtiene los resultados de una consulta de la base de datos de /api/blogposts. Pero luego sale mal.

aquí está mi código:

 import React from 'react'; import './Blogposts.css'; import SingleBpost from '../SingleBpost/SingleBpost.js'; class Blogposts extends React.Component { constructor(props) { super(props); this.state = { receivedPosts: [] }; } async getBpostsFromServer() { const response = await fetch("/api/blogposts"); let myPosts = await response.json(); this.setState({receivedPosts: myPosts}); } componentDidMount() { this.getBpostsFromServer(); } render() { console.log(this.state.receivedPosts); return( <div id="Blogposts"> <SingleBpost title="Test" date="18/12/2021" author="Kepos Team" body="Hello, this is a test for the blogposts!" /> </div> ); } } export default Blogposts;

Solo hay un archivo console.log: console.log(this.state.receivedPosts); pero la consola me da dos resultados: primero imprime una matriz que no reconozco, luego imprime la matriz que necesito. (aquí hay una captura de pantalla https://imgur.com/a/q40aVkq ).

Pero cuando trato de alimentar los datos de this.state.receivedPosts en mi componente de esta manera:

 <SingleBpost title={this.state.receivedPosts[0].title} (etc etc) />

No funciona (mi pantalla en realidad se queda en blanco).

¿Alguien tiene alguna idea de lo que estoy haciendo mal aquí? ¡Gracias por cualquier ayuda!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puedes usar && que te protegerá de ese caso

 render() { return ( this.state.receivedPosts && this.state.receivedPosts.length <div id="Blogposts"> <SingleBpost title="Test" date="18/12/2021" author="Kepos Team" body="Hello, this is a test for the blogposts!" /> </div> ); }

O manejarlo a través del operador ternario:

 render() { return ( this.state.receivedPosts && this.state.receivedPosts.length ? <div id="Blogposts"> <SingleBpost title="Test" date="18/12/2021" author="Kepos Team" body="Hello, this is a test for the blogposts!" /> </div> : null ); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda