Я думаю, что проблема заключается в том, что вы фактически добавляете изображения в состояние.
this.setState({
selectedFile: file,
previewImgURL: reader.result,
----> pictures: [...this.state.previewImgURL, this.state.previewImgURL]
});
Когда вы используете оператор распространения, у вас фактически нет this.state
так что this.state.previewImgURL
еще не существует.
Я бы просто попытался:
this.setState({
selectedFile: file,
previewImgURL: reader.result,
pictures: [reader.result]
});
Я также не уверен в использовании синтаксиса ...
(распространение) в этом контексте.Если вы хотите просто обновить часть изображений состояния (если у вас уже есть состояние), вы можете использовать его как:
this.setState({
...this.state,
pictures: [reader.result]
});
Еще одна вещь, на которую стоит обратить внимание, это то, что вы обновляете состояние в обратном вызове, чтобы ононе будет гарантировано заполнение при вызове вашего console.log(this.state.pictures)
Кроме того, вы находитесь в том же цикле, поэтому ваше состояние не было обновлено.
Для дополнительной отладки поместите какой-нибудь отладчик где-нибудь в Chrome DevTools и в консоль типа this.state.picture
.Это отобразит часть изображения состояния и в отладчике вы также сможете перешагнуть через вашу программу.Зайдите сюда для получения дополнительной информации об отладке DevTools: https://developers.google.com/web/tools/chrome-devtools/javascript/