我正在尝试将状态项同步添加到数组中,但是仅最后一项被添加。我认为这是因为状态是在每个“更新”调用中被读取之前被更新的,这是一个典型的竞赛条件问题。处理此操作的常规方法是什么?我正在使用React Hooks,而setIndepAttributes来自useState。
async function onFilesAdded(e) {
...
for(var i = 0; i < atts.length; i++) {
await addAtt(atts[i]);
}
...
async function addAtt(att) {
return new Promise(async function(resolve, reject) {
await props.addIndependentAttribute(att);
resolve("done");
});
}
function addIndependentAttribute(att) {
return new Promise(async function(resolve, reject) {
await setIndepAttributes([...indepAttributes, att]);
resolve("done");
});
}