const onDrop = useCallback(async (acceptedFiles) => {
const newImage = acceptedFiles[0];
let hasError;
if (newImage.size > allowedMaximumFileSize) {
hasError = true;
alert("Размер файла не допустим");
}
if (!allowedMimeTypes.includes(newImage.type)) {
hasError = true;
alert("Тип файла не допустим");
}
if (!hasError) {
const previewBASE64 = await fileReader(newImage);
onImageChange(name, { file: newImage, preview: previewBASE64 });
}
}, []);
Вот тут у вас в массиве зависимостей нет onImageChange. Соответственно, всегда выполняется onImageChange с изначальным значением (то есть пустыми полями).
P.S. Если добавить в зависимости onImageChange, то мемоизация будет бесполезна, потому выше вы создаете эту функцию каждый рендер.