Я не предлагаю вам переводить компонент непосредственно в состояние, согласно официальным документам React здесь :
Состояние должно содержать данные, которые могут изменить обработчики событий компонента для запуска обновления пользовательского интерфейса.
Также четко указано, что компоненты не должны go в состоянии:
this.state должно содержать только минимальный объем данных, необходимый для представления состояния вашего пользовательского интерфейса. Таким образом, он не должен содержать:
Реагировать на компоненты : построить их в render () на основе базовых параметров и состояния.
Таким образом, я предлагаю вам сначала извлечь извлечение действия в отдельную функцию для лучшего чтения и установить URL-адреса, которые нужно указать вместо компонента.
fetchPics = async() => {
const allPics = await storageRef.listAll();
const allUrls = await allPics.items.map(picRef => picRef.getDownloadURL());
// here I use async, you might also use promise.all()
// as stated in @Alexandr Zavalii's answer
this.setState({ images : allUrls })
}
componentDidMount() {
this.fetchPics();
}
Наконец, визуализируйте компоненты с URL-адресами в функции рендеринга.
render() {
return (
<div>
{this.state.images.map(url => <img src={url} alt="pics" />)}
</div>
)
}