TypeError: state.confirmed.map is not a function
TypeError: state.confirmed.map is not a function
我尝试从 Reacts 上的一个 API 获取数据。我尝试了每一种可能性来在浏览器上呈现数据,但我不知道我做错了什么?
这是app.js
import React, { useState, useEffect } from "react";
import { stat } from "fs";
function App() {
const [loading, setLoading] = useState(false);
const [state, setstate] = useState({
confirmed: "",
recovered: "",
death: ""
});
useEffect(() => {
coronaData();
}, []);
const coronaData = async () => {
setLoading(true);
try {
const response = await fetch(
"https://w3qa5ydb4l.execute-api.eu-west-1.amazonaws.com/prod/finnishCoronaData"
);
const data = await response.json();
console.log(data.confirmed);
setstate({
confirmed: data,
recovered: data.recovered,
death: data.death === null ? null : alert("Lucikily No-one died")
});
} catch (error) {
console.log(error, "FAILED TO FETCH");
}
setLoading(false);
};
return (
<div className="App">
{state.confirmed.map(list => {
return (
<ul>
<li>{list.healthCareDistrict}</li>
</ul>
);
})}
</div>
);
}
export default App;
**忽略此消息,为了post这个问题,我需要写更多。 **
原因是您在 useState()
中使用空字符串作为 state.confirmed
的默认值。从技术上讲,.map()
只能用于导致错误的数组,因为应用程序试图调用空字符串。
我会在最初定义时更改为[]
:
const [state, setstate] = useState({
confirmed: [],
recovered: "",
death: ""
});
我相信此更改也适用于以后的 recovered
。目前您并没有像看起来那样在代码中使用。
希望对您有所帮助!
我尝试从 Reacts 上的一个 API 获取数据。我尝试了每一种可能性来在浏览器上呈现数据,但我不知道我做错了什么?
这是app.js
import React, { useState, useEffect } from "react";
import { stat } from "fs";
function App() {
const [loading, setLoading] = useState(false);
const [state, setstate] = useState({
confirmed: "",
recovered: "",
death: ""
});
useEffect(() => {
coronaData();
}, []);
const coronaData = async () => {
setLoading(true);
try {
const response = await fetch(
"https://w3qa5ydb4l.execute-api.eu-west-1.amazonaws.com/prod/finnishCoronaData"
);
const data = await response.json();
console.log(data.confirmed);
setstate({
confirmed: data,
recovered: data.recovered,
death: data.death === null ? null : alert("Lucikily No-one died")
});
} catch (error) {
console.log(error, "FAILED TO FETCH");
}
setLoading(false);
};
return (
<div className="App">
{state.confirmed.map(list => {
return (
<ul>
<li>{list.healthCareDistrict}</li>
</ul>
);
})}
</div>
);
}
export default App;
**忽略此消息,为了post这个问题,我需要写更多。 **
原因是您在 useState()
中使用空字符串作为 state.confirmed
的默认值。从技术上讲,.map()
只能用于导致错误的数组,因为应用程序试图调用空字符串。
我会在最初定义时更改为[]
:
const [state, setstate] = useState({
confirmed: [],
recovered: "",
death: ""
});
我相信此更改也适用于以后的 recovered
。目前您并没有像看起来那样在代码中使用。
希望对您有所帮助!