【发布时间】:2022-01-30 15:43:05
【问题描述】:
我对 useEffect 是如何触发的以及它是如何工作的感到有点困惑。我写了一个这样的函数,但是 useEffect 根本没有运行。我想从 API 中获取数据,然后根据数据呈现页面。但它不会触发 useEffect。如果我不使用useEffect,它会渲染页面3次。
async function getData() {
var tmpArrData = [];
await fetch("this API is hidden due to the privacy of the company - sorry")
.then((res) => res.json())
.then((data) => {
console.log("data", data);
tmpArrData = data;
});
console.log("tmpData ", tmpArrData);
return tmpArrData;
}
function App() {
const [arrData, setArrData] = useState();
const [loadData, setLoadData] = useState(false);
useEffect(() => {
console.log("if it works, this line should be shown");
const tmpArrData = getData();
setArrData(tmpArrData);
}, [arrData]);
const data = arrData[0];
console.log(data);
return (
<GifCompoment
id = {data.id}
name = {data.name}
activeTimeTo = {data.activeTimeTo}
activeTimeFrom = {data.activeTimeFrom}
requiredPoints = {data.requiredPoints}
imageUrl = {data.imageUrl}
/>
);
}
export default App;
【问题讨论】:
-
useEffect钩子保证在初始渲染结束时至少运行一次。你是说你看不到console.log("if it works, this line should be shown");日志吗? -
是的,我没看到那行
标签: reactjs async-await react-hooks use-effect use-state