开发者问题收集

reactjs 错误-TypeError:无法读取未定义的属性“map”

2021-05-21
256
import React , {useState, useEffect} from 'react'
import styles from './Statewise.css';

const Statewise = () => {

    const [data, setData]=useState([]);
     
    const getCData = async () => {
        const res = await fetch('https://api.covid19india.org/data.json');
        const actualData = await res.json();
        console.log(actualData.Statewise);
        setData(actualData.Statewise);
    }
    useEffect(() => {
       getCData();
    }, [])

    return (
        <div className="bts">
            <div className="container-fluid mt-5">
                <div className="main-heading">
                    <h1 className="mb-5">
                        <span className="font-weight-bold">INDIA COVID 19 TRACKER</span>
                    </h1>
                </div>
                <div className="table-responsive">
                    <table className="table table-hover">
                        <thead className="thead-dark">
                            <tr>
                                <th>States</th>
                                <td>Confirmed</td>
                                <td>recovered</td>
                                <td>death</td>
                                <td>active</td>
                                <td>updated</td>
                            </tr>
                        </thead>
                        <tbody>
                            {
                               data.map((curElem) => {
                                      return(
                                          <tr key={curElem.id}>
                                              <th>{curElem.state}</th>
                                              <td>{curElem.Confirmed}</td>
                                              <td>{curElem.recovered}</td>
                                              <td>{curElem.deaths}</td>
                                              <td>{curElem.active}</td>
                                              <td>{curElem.lastupdatedtime}</td>
                                          </tr>
                                      )
                                })
                            }
                        </tbody>
                        </table>
                </div>
            </div>
        </div>
    )
}
export default Statewise;

无法从 api 中提取值。

  1. 我尝试过 data && data.map(... 这也不起作用。
  2. 我尝试过添加 load 和 error 方法,但 api id 中的主要数据也没有显示。 请提出解决方案。
2个回答

您的 actualData 不包含 Statewise 字段,但它包含 statewise (查看两个字段中 s 的区别)

因此,要解决这个问题,只需将 Statewise 替换为 statewise

const getCData = async () => {
    const res = await fetch('https://api.covid19india.org/data.json');
    const actualData = await res.json();
    setData(actualData.statewise);
}
Priyank Kachhela
2021-05-21

当您在 HTML 中使用 data 时,您可以创建一个条件语句以确保数据已加载。

例如:


     {
                             data ?  data.map((curElem) => {
                                      return(
                                          <tr key={curElem.id}>
                                              <th>{curElem.state}</th>
                                              <td>{curElem.Confirmed}</td>
                                              <td>{curElem.recovered}</td>
                                              <td>{curElem.deaths}</td>
                                              <td>{curElem.active}</td>
                                              <td>{curElem.lastupdatedtime}</td>
                                          </tr>
                                      )
                                      : <p> No data available </p>

                                })
                            }
crg
2021-05-21