У меня кнопка массовой загрузки файлов. То, что я сейчас делаю, это наличие всех файлов в const fileContents, и я перебираю каждый файл и вызываю api
const fileContents = data.target.files;
fileContents.forEach(file => {
const data = new FormData();
data.append('file', file);
dispatch(UploadDispatcher(data));
});
}
и в редуктор получает файл и вызывает загрузку API
export const UploadDispatcher = data => dispatch => {
performPost(UPLOAD_ENDPOINT, data)
.then(response => {
if (response.status === 200) {
dispatch({
type: GET_UPLOADED,
payload: response,
});
}
})
.catch(err => {
dispatch({ type: ERROR, payload: err });
});
};
и в диспетчере GET_UPLOADED и делает переменную true
case GET_UPLOADED: {
return {
...state,
successToast: true,
uploaded: true,
};
}
, а в компоненте получает эту переменную и использует useEffect
useEffect(() => {
if (uploaded) {
callListApi();
}
}, [uploaded]);
Но проблема в том, что если есть 5 файлов, то после первой загрузки самого файла создание переменной true и вызов callListApi .it не должно произойти, после того, как все 5 загруженных файлов только, он должен сделать флаг true и API списка вызовов (поскольку загрузка API требует времени, чтобы получить ответ). я слышал об асине c жду и все, но не уверен. кто-нибудь может помочь