[英]React Dependent API Calls
假设我有以下结构的要点数组,请原谅我和我的理解不足:
{
"description": 3,
"id": 123456,
"forks_url": "https:api.github.com..."
}
我需要获取用户的 gist 列表,但还需要查询要呈现的每个 gist 的分支。 如何使用Promise.all
或任何其他可能有帮助的库来使用最少数量的异步 api 调用
我的意思是,我现在让它工作,每次都获取要点并查询forks
,但它会进行很多gists
调用,我想避免这些调用。
const GistData = ({ username }) => {
React.useEffect(() => {
if (!username) {
return;
}
setState({ status: 'pending' })
octokit.request(`GET /users/${username}/gists`, username)
.then(
gists => {
setState({ gists: gists.data, status: 'resolved' })
},
error => {
setState({ error, status: 'rejected' })
}
);
}, [username]);
if (status === 'resolved') {
return gists.map(
gist => <GistCard key={gist.id} gist={gist} username={username} />
)
} else {
throw error
}
}
export default GistData
const GistCard = ({ gist, username }) => {
React.useEffect(() => {
if (!id) {
return;
}
setState({ status: 'pending' });
octokit.request(`GET /gists/${id}/forks`, id).then(
(forks) => {
setState({ forks: forks.data, status: 'resolved' });
},
(error) => {
setState({ status: 'rejected', error });
}
);
}, [id]);
if (status === 'resolved') {
return (
<div className="gist">
<p>{description}</p>}
<Tags fileList={files} />
{forks.length > 0 && (
<div>
<h3>Forks: ({forks.length})</h3>
{forks.map((fork) => (
<Fork key={fork.id} fork={fork} />
))}
</div>
)}
</div>
);
} else {
throw error
}
};
export default GistCard;
在我看来,这是一个后端问题。
以数据的方式,前端不可能创建Promise.All
,因为您需要初始调用才能获取 Gist 列表。 在技术上获得要点列表后,您可以执行Promise.All
,但与您目前正在执行的呼叫数量相同。
好吧,我想您的意思是每次获得要点信息时都进行获取。 为此,您可以联系.then
。
.then(gists => {
setState({ gists: gists.data, status: 'resolved' })
},
error => {
setState({ error, status: 'rejected' })
}
return gists.data
).then(data => call fetch fork by each gist);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.