Существует объект product
, у которого в качестве поля находится объект manufacturer
.После получения manufacturers
с моего сервера я переназначаю поле продукта manufacturer
новыми данными (например, у выбранного производителя есть дополнительный объект avatar
в качестве поля).
async componentDidMount() {
strapi.setToken(this.state.user.jwt);
const products = await strapi.getEntries('products');
products.forEach(async product => {
const manufacturer = await strapi.getEntry('manufacturers', product.manufacturer.id); //fetched manufacturers has additional field "avatar"
Object.assign(product.manufacturer, manufacturer);
});
console.log(products); // product.manufacturer.avatar is not null
this.setState({
products
});
Затем япри попытке отобразить аватар в React render ().
render() {
if (!this.state.products) return null;
return(
{this.state.products ? this.state.products.map(product => (
// and it says that avatar is null
<img src={product.manufacturer.avatar.url} />
// displays manufacturer with avatar object
{console.log(product.manufacturer)}
// says null!
{console.log(product.manufacturer.avatar)}
))}
)
}
Также, когда я проверяю состояние с помощью инструментов разработчика React, поле продукта manufacturer
имеет объект avatar
и не является нулевым.
ОБНОВЛЕНИЕ : Спасибо Сергею Суслову
strapi.setToken(user.jwt);
const fetchedProducts = await strapi.getEntries('products');
const promices = fetchedProducts.map(async fetchedProduct => {
const manufacturer = await strapi.getEntry('manufacturers', fetchedProduct.manufacturer.id);
const product = { ...fetchedProduct, manufacturer };
return product;
});
Promise.all(promices).then(products =>
this.setState({
products
})
);