Вызов getDownloadURL()
означает, что SDK должен вызвать сервер, чтобы получить этот URL. К тому времени, когда вызов возвращается с сервера с URL-адресом для загрузки, <img src={img}
уже давно запущен.
По этой причине вы хотите сохранить URL-адрес для загрузки в состоянии, а затем использовать URL-адрес из состояния в вашем методе рендеринга.
Обычно вы начинаете загружать данные в вашем componentWillMount
методе:
componentWillMount() {
let promises = this.state.productsArr.map((product, i) => {
return storageRef.child(`images/${product.images[0]}`).getDownloadURL();
});
Promise.all(promises).then((downloadURLs) => {
setState({ downloadURLs });
});
}
При вызове setState()
React автоматически выполнит повторную визуализацию интерфейса пользователя. части, которые зависят от измененного состояния. Итак, в вашем методе рендеринга вы будете использовать URL загрузки с state.downloadURLs
.