.mapa není funkce při načítání dat z API reactjs

0

Otázka

Jsem pomocí API načíst data. Když jsem konzoli.přihlásit se moje data, ukazuje se jako pole. Ale když jsem se snažit, aby se na mapu získat data k zobrazení, to mi říká, že .mapa není funkce. Vytvořil jsem vlastní useFetch háček a pak jsem import do samostatné složky. Tady je můj kód a screenshot z konzole.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

console.přihlásit

console.log info obrázek

Vaše pomoc je velmi ceněn!

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

Nejlepší odpověď

1

Tato data není přítomen jo, když se pokusíte udělat mapu tak, aby dělat:

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

Ahoj! Ano, to už jsem zkoušel a pořád stejná chyba.
cjb

neviděl jsem v konzoli log, data je ve skutečnosti objekt a data.ceny pole
Konflex

Ok, myslel jsem to tak, ale konzole.přihlaste se říká pole! Jsem stále nejste jisti, o tom, jak extrahovat data z objektu!
cjb

Zkuste na mapě s daty.ceny, by to mělo být, jsem upravil můj vzkaz
Konflex

Oh děkuji moc to fungovalo! Zachránce života!!!
cjb

To je proto, že definovat data jako null, takže to nemůže přistupovat k datům.ceny, když je prázdná, je třeba zkontrolovat, že data není null dělat mapě
Konflex

Jak to, že to nebude fungovat jen s {data a a data.ceny.mapa(cena => (? Jen chci, aby opravdu pochopit, proč přidávat data.ceny ve středu fungovalo!
cjb

Opravdu si vážím vaší pomoci, děkuji moc!
cjb

V jiných jazycích

Tato stránka je v jiných jazycích

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