.la carte n'est pas une fonction lors de l'extraction de données à partir de l'API reactjs

0

La question

Je suis en utilisant une API pour récupérer les données. Quand j'ai de la console.journal de mes données, il montre qu'un tableau. Mais quand j'essaie de la carte pour obtenir les données à afficher, il me dit que .la carte n'est pas une fonction. J'ai créé un custom useFetch crochet et puis je suis de l'importer dans une composante distincte. Voici mon code et une capture d'écran de la console.journal:

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.journal

console.journal d'info de l'image

Votre aide est grandement appréciée!

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

La meilleure réponse

1

Ces données ne sont pas présents yep quand vous essayez de faire la carte de façon à faire:

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

Salut à tous! Oui, j'ai essayé déjà et a été toujours obtenir la même erreur.
cjb

je n'ai pas vu le journal de la console, de données est en fait un objet et de données.prix d'un tableau
Konflex

Ok, j'ai compris alors, mais la console.le journal disait tableau! Je ne suis toujours pas sûr de savoir comment extraire les données à partir de l'objet!
cjb

Essayez de carte avec des données.le prix, elle devrait l'être, j'ai édité mon message
Konflex

Oh, merci beaucoup, cela a fonctionné! Épargnant de vie!!!
cjb

C'est parce que vous définissez d'abord les données que nul ne peut donc pas accéder aux données.prix quand c'est nul, vous devez vérifier que les données n'est pas nulle pour faire la carte
Konflex

Comment se fait-il ne serait pas travailler avec {données && données.les prix.carte(prix => (? Juste voulez vraiment comprendre pourquoi l'ajout de données.prix au milieu travaillé en!
cjb

J'apprécie vraiment votre aide, je vous remercie beaucoup!
cjb

Dans d'autres langues

Cette page est dans d'autres langues

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