.o mapa não é uma função, quando a obtenção de dados a partir de API reactjs

0

Pergunta

Eu estou usando uma API para obtenção de dados. Quando eu consola.registo de meus dados, ele mostra como uma matriz. Mas quando eu tento mapa sobre ele para obter os dados para apresentação, ele diz-me que .o mapa não é uma função. Eu criei um custom useFetch gancho e, em seguida, eu estou importando em um componente separado. Aqui está o meu código e uma captura de tela do 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.registo

console.informações de registo de imagem

Sua ajuda é muito apreciada!

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

Melhor resposta

1

Estes dados não está presente sim quando você tenta fazer o mapa, para o fazer:

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

Oi lá! Sim, eu tentei isso já e ainda estava recebendo o mesmo erro.
cjb

eu não vejo o console de log de dados é, na verdade, de um objeto e de dados.prêmios de uma matriz
Konflex

Ok, eu percebi isso, mas o console.log foi dizendo matriz! Eu ainda estou inseguro de como extrair os dados do objeto!
cjb

Tente mapa com dados.prêmios, ele deve ser, eu editei minha mensagem
Konflex

Oh muito obrigado isso funcionou! Saver de vida!!!
cjb

Isso é porque você definir, inicialmente, dados como nulos, de modo que ele não pode acessar os dados.prémios quando é nulo, é necessário verificar que os dados não é nulo para fazer o mapa
Konflex

Como é que isso não iria funcionar com apenas {dados && dados.prêmios.mapa(prêmio => (? Só quero realmente entender o porquê de adicionar os dados.prémios no meio funcionou!
cjb

Eu realmente aprecio a sua ajuda, muito obrigado!
cjb

Em outros idiomas

Esta página está em outros idiomas

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