我正在嘗試將元素從一個陣列移動到另一個陣列(columnsOut 到 columnsIn),但最后并非所有值都已傳輸(通常是 5 個元素中的 2 個),所以它似乎與反應的異步狀態有關,我仍然不知道如何應對。誰能給我指路?
columnsOut: [1, 2, 3, 4, 5]
columnsIn: []
function handleRemoveAllFilters(event) {
columnsOut.forEach((col) => (
setColumnsIn(columnsIn.concat(col))
));
setColumnsOut([]);
}
運行功能后:
columnsOut: []
columnsIn: [4, 5]
uj5u.com熱心網友回復:
@Marian在這里給出的答案也經過編輯以匹配類似于下面的內容:
function handleRemoveAllFilters(event) {
setColumnsIn(prev => ([...prev, ...columnsOut]));
// above will retain existing elements in columnsIn array
// below will discard
// setColumnsIn([...columnsOut]);
setColumnsOut([]);
};
uj5u.com熱心網友回復:
從設定的值更改為setColumnsIn獲取接收previousStateas 引數的回呼。
function handleRemoveAllFilters(event) {
columnsOut.forEach((col) => (
setColumnsIn((prevColumnsIn) => [...prevColumnsIn, col])
));
setColumnsOut([]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/435188.html
標籤:javascript 反应
