.la mappa non è una funzione, quando il recupero dei dati da API reactjs

0

Domanda

Sto utilizzando un'API per recuperare i dati. Quando ho console.registro i miei dati, mostra come un array. Ma quando cerco di mappa su di esso per ottenere la visualizzazione dei dati, mi dice che .la mappa non è una funzione. Ho creato un custom useFetch gancio e poi io sono l'importazione in un componente separato. Ecco il mio codice e una schermata della console.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.registro

console.info log immagine

Il vostro aiuto è molto apprezzato!

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

Migliore risposta

1

Questo dato non è presente yep quando si tenta di fare la mappa in modo da fare:

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

Ciao a tutti! Sì, ho gia ' provato ed era ancora lo stesso errore.
cjb

non ho visto il log della console, i dati è in realtà un oggetto e dati.premi un array
Konflex

Va bene, ho capito così, ma la console.registro stava dicendo array! Io sono ancora sicuri di come estrarre i dati dall'oggetto!
cjb

Tenta di mappa con i dati.premi, dovrebbe essere, ho modificato il mio messaggio
Konflex

Oh grazie mille ha funzionato! Risparmiatore di vita!!!
cjb

Questo perché si definisce inizialmente dati null e quindi non può accedere ai dati.premi quando è nullo, è necessario controllare che i dati non è null a fare la mappa
Konflex

Come mai non funziona solo con {&dati& dati.i premi.mappa(premio => (? Voglio solo capire davvero perché l'aggiunta di dati.premi in mezzo funzionato!
cjb

Apprezzo molto il vostro aiuto, grazie mille!
cjb

In altre lingue

Questa pagina è in altre lingue

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