почему совпадение не определено в функции извлечения - PullRequest
0 голосов
/ 09 марта 2020

Я использую match для получения идентификатора, который будет искать в API этот идентификатор и извлекать из него данные. Это работало, пока я не начал перемещать свои файлы, и теперь я не уверен, как передать соответствие в мою функцию выборки

HeroDetail.services

import React from 'react'

export const fetchHeroDetail = async ({match}) => {
    const data = await fetch(`https://api.opendota.com/api/heroStats`)
    const item = await data.json()
    const heroId = match.params.id
    console.log(match.params.id)
    const hero = item.find(element => element.id === Number(heroId))
    console.log(hero)
    return await hero

};

HeroDetail Component

import React, {useState, useEffect} from "react"
import "../App.css"
import {fetchHeroDetail} from './services/HeroDetail.services'

const setHeroDetail = async setHero => {
     const hero = await fetchHeroDetail()
    setHero(hero)
}

function HeroDetail() {

    const [hero, setHero] = useState({})

    useEffect(() => {
            setHeroDetail(setHero)
    },[])




    return(
        <div>
           <h1>{hero.localized_name} </h1>
            <h2>{hero.move_speed}</h2>
            <h2>{hero.base_health}</h2>
        </div>
    )
}

export default HeroDetail

1 Ответ

1 голос
/ 09 марта 2020

Вы должны просто сделать это:

function HeroDetail() {

    const [hero, setHero] = useState({})

    useEffect(async () => {
         if (!hero) {
          const data = await fetchHeroDetail()
          setHero(data)
         }
    })
...
}
...