• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyświetlanie danych z Api React

Object Storage Arubacloud
0 głosów
535 wizyt
pytanie zadane 26 grudnia 2019 w JavaScript przez Flueczka Nowicjusz (150 p.)

Chce wyświetlić dane z API w reaccie które zwraca takiego JSON'a:

{
  "data": [
    {
      "slug": "song1",
      "_id": "5dfa9511a71ef835bc3216ba",
      "title": "song1",
      "createdAt": "2019-12-18T21:07:29.093Z",
      "updatedAt": "2019-12-26T17:44:07.852Z",
      "__v": 0
    },
    {
      "slug": "song2",
      "_id": "5dfa4609c12e5b29546a59a6",
      "title": "song2",
      "createdAt": "2019-12-18T15:30:17.767Z",
      "updatedAt": "2019-12-26T17:43:42.854Z",
      "__v": 0
    }
  ],
  "count": 2
}

W reakcie wygląda to tak:

import React, { Component } from 'react';

export default class Customers extends Component {
  constructor() {
    super();
    this.state = {
      customers: []
    };
  }
  componentDidMount() {
    fetch('http://localhost:3000')
      .then(res => res.json())
      .then(customers =>
        this.setState({ customers }, () => console.log('Fetch data', customers))
      );
  }
  render() {
    return (
      <div>
        <h2>Data: </h2>
        <ul>{this.state.customers[1]}</ul>
      </div>
    );
  }
}

W konsoli fetch zwraca mi takie coś:

I tutaj mam problem, w jaki sposób mogę teraz te dane wyrenderować?

Próbowałem w taki sposób:

{this.state.customers.map(res => (
  <div>{res.title}</div>
))}

Zwraca błąd

TypeError: this.state.customers.map is not a function

 

Ktoś może nakierować jak rozwiązać mój problem?

 

Dziękuje, pozdrawiam

1 odpowiedź

+2 głosów
odpowiedź 26 grudnia 2019 przez Tomek Sochacki Ekspert (227,510 p.)
wybrane 26 grudnia 2019 przez Flueczka
 
Najlepsza
No ale przecież masz wyraźnie napisane co jest błędem i sam robisz console loga na strukturze, to zobacz co tam masz :) Obiekt customers ma dwa pola "count" oraz "data" i to "data" jest dopiero tablicą... :)
komentarz 26 grudnia 2019 przez Flueczka Nowicjusz (150 p.)

Czasami szukam tego co nie trzeba.. Pół dnia szukania po internecie a tu wystarczyło jedną rzecz zmienić :-)

Dla kogoś kto będzie miał problem taki jak ja :

const persons = res.data

zamienić na

const persons = res.data.data

w renderze:

        {this.state.persons.map(person => (

          <li>{person.title}</li>

       ))}

 

Dzięki bardzo za pomoc :P I szczęśliwego nowego roku życzę!

komentarz 26 grudnia 2019 przez Tomek Sochacki Ekspert (227,510 p.)
tak na marginesie to radzę unikać sytuacji, gdy masz "data.data", "payment.payment" itp. itd. Wiem, że czasami kontrakty z back-endem czy zewnętrznym API jest jaki jest, ale jesli masz na to wpływ to lepiej zrobić różne nazwy pól, trudniej wtedy o pomyłkę :)
komentarz 26 grudnia 2019 przez Flueczka Nowicjusz (150 p.)
Właśnie to zmieniłem, jeszcze raz dzięki za pomoc!

Podobne pytania

0 głosów
2 odpowiedzi 407 wizyt
0 głosów
1 odpowiedź 217 wizyt
+1 głos
1 odpowiedź 492 wizyt
pytanie zadane 18 czerwca 2022 w Java przez `Krzychuu Stary wyjadacz (13,940 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...