我怎样才能让 React 等待从 Fetch 获取数据?
2021-04-07
323
首先,我使用 useReducer 来设置 State。
当组件挂载时,这个 useFetch 钩子将被触发,并且
包含操作(类型和有效负载)的回调会将此初始数据设置为 State(jobInfo)。
import { useEffect, useState } from 'react';
const useFetch = (callback, url) => {
const [loading, setLoading] = useState(false);
const fetchInitialData = async () => {
setLoading(true);
const response = await fetch(url);
const initialData = await response.json();
callback(initialData);
setLoading(false);
};
useEffect(() => {
fetchInitialData();
}, []);
return loading;
};
export default useFetch;
但问题是,当我尝试使用 map 时,我得到了
not a function
错误
因为
jobInfo
数据尚未获取!
所以我想知道如何让它等到数据到达?
const JobList = () => {
const { jobInfo, loading } = useContext(JobInfoContext);
console.log(jobInfo);
jobInfo['data'].map((infos) => console.log(infos));
}
1个回答
您只需检查数据是否存在。一旦设置了状态,组件就会重新渲染:
const JobList = () => {
const { jobInfo, loading } = useContext(JobInfoContext);
console.log(jobInfo);
!loading && jobInfo['data'] && jobInfo['data'].map((infos) => console.log(infos));
}
Johannes Klauß
2021-04-07