【发布时间】:2020-11-05 15:03:55
【问题描述】:
我有一个表格,每行都有Delete 按钮。当您删除该行时,客户端将异步发送请求执行 API。这意味着,如果您快速删除多行,您不必等待一个请求完成,再发送另一个删除请求。当您单击Delete 按钮并发送请求时,该按钮将被禁用(在响应返回之前该行将消失)。
这是处理Container中删除的函数:
const [deletingTeams, setDeletingTeams] = useState([]);
const handleDelete = (teamId) => {
setDeletingTeams([...deletingTeams, teamId]);
deleteTeam(teamId).then(() => {
console.log(deletingTeams); <---- This prints EMPTY array. Why????
let newState = deletingTeams.filter((id) => id !== teamId);
setDeletingTeams(newState);
});
};
非常简单。 deletingTeams 是一个数组,其中包含当前正在删除的团队的 ID(响应没有从该 API 返回,删除成功)。
在第 3 行 (setDeletingTeams([...deletingTeams, teamId]);) 我将新的 teamId 添加到数组中,它可以工作。新数组正在传递给List 组件,Delete 按钮确实被禁用。 但是...
...当响应返回时,在 then 承诺中,我想从数组中删除 teamId。问题是,deletingTeams 数组已经为空(在过滤器之前)。为什么??
谢谢你的解释,
【问题讨论】:
标签: javascript reactjs redux async-await es6-promise