【发布时间】:2023-03-13 00:59:01
【问题描述】:
我正在开发电影列表搜索应用程序,稍后可能会尝试添加延迟加载。这仅用于 POC 目的。以后可能会将它添加到我的投资组合中。
所以,我首先创建了一个全局 api.js,我将在其中放置带有回调的 API 调用,然后使用来自组件的回调调用 API。
const PageOneApi = (callback, errorCallback) => {
axios("https://run.mocky.io/v3/36e4f9ce-2e48-4d44-9cf8-57f6900f8e12")
.then((response) => {
console.log("response from page one api", response);
callback(response);
})
.catch((err) => {
console.log("error from page one api", err);
errorCallback(err);
});
};
export const movieListApi = {
PageOneApi,
};
我有一个movieList 组件:
function MovieList() {
const [pageOneData, setPageOneData] = useState({});
useEffect(async () => {
await movieListApi.PageOneApi(
(res) => {
const pageOneData = res.data.page;
setPageOneData(pageOneData);
console.log("page one data: ", pageOneData);
},
(err) => {
console.log(err);
}
);
}, []);
const movieList = pageOneData.contentItems;
console.log(movieList);
return (
<div>
<h4 className="text-white p-5">{pageOneData.title}</h4>
<div className="grid grid-flow-row grid-cols-3 grid-rows-3 gap-7 m-5">
{movieList.map((movie) => {
console.log("movie", movie);
})}
</div>
</div>
);
}
现在,问题是我无法遍历 movieList,即使它是一个数组。
【问题讨论】:
-
如果你使用promise,那么你不需要将回调函数传递给
PageOneApi函数;您可以从PageOneApi函数返回承诺,并将then()和catch()方法调用链接到函数调用。
标签: arrays reactjs react-hooks iterable