.API reactjs'den veri alınırken map bir işlev değildir

0

Soru

Veri almak için bir API kullanıyorum. Teselli ettiğimde.verilerimi günlüğe kaydet, bir dizi olarak gösterir. Ama verileri görüntülemek için haritalandırmaya çalıştığımda, bana bunu söylüyor .harita bir işlev değildir. Özel bir useFetch kancası oluşturdum ve sonra onu ayrı bir bileşene aktarıyorum. İşte kodum ve konsolun ekran görüntüsü.günlük:

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

Liste.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.günlük

konsol.günlük bilgisi resmi

Yardımlarınız büyük beğeni topluyor!

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

En iyi cevabı

1

Haritayı yapmaya çalıştığınızda bu veriler mevcut değil:

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

Merhabalar! Evet, bunu zaten denedim ve hala aynı hatayı alıyordum.
cjb

konsol günlüğünü görmedim, veriler aslında bir nesne ve veridir.ödüller bir dizi
Konflex

Tamam, anladım ama konsol.günlük array diyordu! Verileri nesneden nasıl çıkaracağımdan hala emin değilim!
cjb

Verilerle eşleştirmeyi deneyin.ödüller, öyle olmalı, mesajımı düzenledim
Konflex

Çok teşekkür ederim bu işe yaradı! Hayat kurtarıcı!!!
cjb

Bunun nedeni, verilere erişememesi için başlangıçta verileri null olarak tanımlamanızdır.ödüller boş olduğunda, haritayı yapmak için verilerin boş olmadığını kontrol etmeniz gerekir
Konflex

Nasıl olur da sadece {data & & data ile çalışmaz.ödüllüler.harita (ödül = >(? Sadece verilerin neden eklendiğini gerçekten anlamak istiyorum.ortadaki ödüller işe yaradı!
cjb

Yardımlarınız için gerçekten minnettarım, çok teşekkür ederim!
cjb

Diğer dillerde

Bu sayfa diğer dillerde

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