Objekte gelten nicht als Kind Reagieren (gefunden: [Objekt-Versprechen])

Ich versuche zu Rendern eine Liste der Beiträge durch die Zuordnung über ein array. Ich habe dies viele Male zuvor, aber für einige

renderPosts = async () => {
    try {
      let res = await axios.get('/posts');
      let posts = res.data;
      return  posts.map((post, i) => {
        return (
          <li key={i} className="list-group-item">{post.text}</li>
        );
      });
    } catch (err) {
      console.log(err);
    }
  }

  render () {
    return (
      <div>
        <ul className="list-group list-group-flush">
          {this.renderPosts()}
        </ul>
      </div>
    );
  }

Alles was ich bekomme ist:

Nicht abgefangener Fehler: die Objekte werden nicht gültig wie ein Kind Reagieren (gefunden: [Objekt-Versprechen]). Wenn Sie bedeutete für die Darstellung einer Sammlung von Kinder, verwenden Sie ein array statt.

Ich habe die Daten zurückgegeben, die von renderPosts und es ist ein array mit den richtigen Werten und keine Versprechungen. Was ist denn hier Los?

  • Sie können immer nur 1 zurück-Objekt aus reagieren. Sie müssen zurückkehren Beiträge.anzeigen const someVar = posts.Karte, und dann wieder <ul>{someVar}</ul> ... dass die Art und Weise, die Sie zurückgeben, ein Objekt gewickelt. reactjs.org/docs/lists-and-keys.html
  • während der erste Kommentar ist wahr, das größere problem ist, dass Sie versuchen, um return JSX von einer async-Methode, die nicht arbeiten. Sie müssen zu Holen Ihre async-Daten in componentDidMount() - und call - this.setState wenn Ihre api zurück, anstatt direkt JSX
  • Ich habe versucht, diese, bevor Sie mit componentWillMount, weil ich davon ausgegangen, das Problem war, aber es hat nicht funktioniert. Habe es nur mit componentDidMount und es funktionierte! Dank azium.
InformationsquelleAutor Aaron | 2017-12-05
Schreibe einen Kommentar