簡體   English   中英

.map 從 API Z3C797270102480CB4D3E1A207D 獲取數據時不是 function

[英].map is not a function when fetching data from API reactjs

我正在使用 API 來獲取數據。 當我 console.log 我的數據時,它顯示為一個數組。 但是當我嘗試通過 map 來獲取要顯示的數據時,它告訴我。 我創建了一個自定義 useFetch 掛鈎,然后將其導入到單獨的組件中。 這是我的代碼和 console.log 的屏幕截圖:

使用Fetch.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.log 信息圖像

非常感謝您的幫助!

是的,當您嘗試執行 map 時,此數據不存在,因此請執行以下操作:

  {data && data.map(prize => (

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM