Я пытаюсь реализовать селектор нескольких файлов изображений в моем приложении React.
Это мой элемент ввода:
<input
type="file"
multiple
onChange={handleImageChange}
/>
{renderPhotos(venueImages)}
Это функции, которые вызываются при выборе файлов. :
const [venueImages, setVenueImages] = useState([]);`
const renderPhotos = source => {
console.log(source); ////////log 1
return source.map(photo => {
return <img src={photo} key={photo} />;
});
};
const handleImageChange = e => {
if (e.target.files) {
const filesArray = Array.from(e.target.files);
console.log(filesArray); ///////// log 2
filesArray.forEach(file => {
const tempUrl = URL.createObjectURL(file);
console.log(tempUrl); ////// log 3
setVenueImages([...venueImages, tempUrl]);
});
}
};
Я звоню renderPhotos
, чтобы показать предварительный просмотр всех выбранных фотографий перед загрузкой.
Проблема, с которой я сталкиваюсь, заключается в следующем: если я выберу, например, 5 фотографий, только 1 будет отображаться на экране. Я вставил консольные журналы в handleImageChange
, и то, что я получаю, запутывает меня еще больше. Второй журнал (я пронумеровал их в своем коде) печатает массив из 5 файлов. После журнала 3 я получу 5 журналов вновь созданных временных URL-адресов для каждого из файлов.
Но журнал 1 будет напечатан только один раз.
Сейчас - если я ' Я нажму на элемент ввода, чтобы выбрать больше файлов, и я получу еще одно изображение. Так что, в основном, каждый раз, когда я выбираю изображения, независимо от того, сколько я выбрал, я получу только еще одно изображение.