Вы должны использовать обновление функционального состояния, чтобы несколько обновлений в очереди правильно обновляли из предыдущего состояния.
const approveOrder = uniqueId => {
if (approvedList.indexOf(uniqueId) < 0) {
setApprovedList(approvedList => approvedList.concat(uniqueId));
}
};
В качестве альтернативы вы можете фильтровать / отображать свои данные по идентификаторам, не содержащимся в текущее состояние и обновить состояние один раз.
const approveAllOrders = data => {
const newDataIds = data.filter(dataItem => {
return approvedList.indexOf(dataItem.unique_id) < 0;
}).map(({ unique_id }) => unique_id);
setApprovedList(approvedList => [...approvedList, newDataIds]);
};
или
const approveAllOrders = data => {
const newDataIds = data.filter(dataItem => {
return !approvedList.includes(dataItem.unique_id);
}).map(({ unique_id }) => unique_id);
setApprovedList(approvedList => [...approvedList, newDataIds]);
};