【发布时间】:2021-12-17 05:31:17
【问题描述】:
我最近学习了使用 axios 从 REST API 获取数据,但是遇到了一个问题。所以我想从 API 中获取一些数据,这是我的代码:
import {useState, useEffect} from 'react'
import axios from 'axios'
import { Popup, GeoJSON } from 'react-leaflet'
import '../Map.css'
const GradientMap = () => {
const [data, setData] = useState([]);
useEffect(()=>{
getData();
})
const getData = async ()=>{
const response = await axios.get('http://localhost:5000/in-data')
setData(response.data)
}
const getColor = (name)=>{...
}
return (
<div>
<GeoJSON data={CIKARANG_UTARA} style={{color: getColor(CIKARANG_UTARA.features[0].properties.Name)}}>
<Popup>
{CIKARANG_UTARA.features[0].properties.Name} <br/> Total Weight: {data[0].Total_Weight}
</Popup>
</GeoJSON>
<GeoJSON data={CIKARANG_BARAT} style={{color: getColor(CIKARANG_BARAT.features[0].properties.Name)}}>
<Popup>
{CIKARANG_BARAT.features[0].properties.Name} <br/> Total Weight: {data[1].Total_Weight}
</Popup>
</GeoJSON>
<GeoJSON data={CIKARANG_TIMUR} style={{color: getColor(CIKARANG_TIMUR.features[0].properties.Name)}}>
<Popup>
{CIKARANG_TIMUR.features[0].properties.Name} <br/> Total Weight: {data[2].Total_Weight}
</Popup>
</GeoJSON>
<GeoJSON data={SUKATANI} style={{color: getColor(SUKATANI.features[0].properties.Name)}}>
<Popup>
{SUKATANI.features[0].properties.Name} <br/> Total Weight: {data[3].Total_Weight}
</Popup>
</GeoJSON>
<GeoJSON data={CIBITUNG} style={{color: getColor(CIBITUNG.features[0].properties.Name)}}>
<Popup>
{CIBITUNG.features[0].properties.Name} <br/> Total Weight: {data[4].Total_Weight}
</Popup>
</GeoJSON>
</div>
)
}
export default GradientMap
错误在 data[0].Total_Weight 中,当我保存文件时它可以工作,但是在我重新加载浏览器后它变成一个错误,我尝试执行 console.log(data) 并返回一个空数组. API 工作正常,以下是响应:
[
{
"Area": "CIKARANG UTARA",
"Total_Weight": 283,
"Total_OR_Weight": 135,
"Total_IN_Weight": 148
},
{
"Area": "CIKARANG BARAT",
"Total_Weight": 0,
"Total_OR_Weight": 0,
"Total_IN_Weight": 0
},
]
这里是重新加载浏览器前的状态(可以看到,没有报错,总重量获取成功):
我不知道该怎么办,我是react和axios的新手,提前谢谢
【问题讨论】: