.map nie jest funkcją pobierania danych z API reactjs

0

Pytanie

Używam API do pobierania danych. Kiedy ja się pocieszam.zarejestruj się moje dane, są one wyświetlane w postaci tablicy. Ale gdy próbuję nałożyć go na mapę, aby wyświetlić dane, on mi mówi, że .map - nie jest to funkcja. Stworzyłem własny hak useFetch, a następnie импортирую go w oddzielny komponent. Oto mój kod i zrzut ekranu konsoli.log:

useFetch.js

import { useEffect, useState } from 'react'

function useFetch(url) {
    const [data, setData] = useState(null)
    const [isLoading, setIsLoading] = useState(true)
    const [error, setError] = useState(null)

    useEffect(() => {
        fetch(url)
            .then(response => {
                if (!response.ok) {
                    throw Error("Sorry, couldn't fetch data for this resource!")
                }
                return response.json()
            })
            .then(responseData => {
                setData(responseData)
                setIsLoading(false)
                setError(null)
            })
            .catch(error => {
                setIsLoading(false)
                setError(error.message)
            })
    }, [url])

    return { data, isLoading, error }
}

export default useFetch

List.js

import React from 'react'
import useFetch from './useFetch'

function PrizeList2017() {
    const { data } = useFetch('http://api.nobelprize.org/v1/prize.json?year=2017&yearTo=2017')

    return (
        <div className="prize-list-2017-container">
            <h1>2017</h1>
            {data.map(prize => (
                <div key={prize.id}>
                    <h2>{prize.category}</h2>
                </div>
            ))}
            {console.log(data)}
        </div>
    )
}

export default PrizeList2017

konsolę.magazyn

przystawka.obraz informacji o czasopiśmie

Jesteśmy bardzo wdzięczni za pomoc!

api arrays javascript map-function
2021-11-23 19:55:22
1

Najlepsza odpowiedź

1

Te dane nie są dostępne tak, gdy próbujesz zrobić mapę, więc zrób:

  {data && data.prizes && data.prizes.map(prize => (
2021-11-23 20:25:42

Witam wszystkich! Tak, ja już próbowałem i nadal otrzymywał ten sam błąd.
cjb

nie widziałem historia konsoli, dane faktycznie są obiektem i danymi.w tablicy
Konflex

Ok, tak myślałem, ale konsola.dziennik mówił: tablica! Wciąż nie jestem przekonany w tym, jak wyciągnąć dane z obiektu!
cjb

Spróbuj porównać dane.nagrody, i tak powinno być, ja edytowany przez wiadomość
Konflex

O, dziękuję bardzo, to zadziałało! Ratownik życia!!!
cjb

Jest to związane z tym, że początkowo zdefiniować dane jak zerowe, więc nie mogą uzyskać dostępu do danych.dlatego, gdy są równe zero, trzeba sprawdzić, że dane nie są pustymi, aby wykonać zestawienie
Konflex

Dlaczego to nie działa tylko z {data && data.prizes.map(nagroda w => (? Po prostu chcę w pełni zrozumieć, dlaczego dodawanie data.prizes w środku udało się!
cjb

Naprawdę doceniam twoją pomoc, bardzo dziękuję!
cjb

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................