Поскольку у вас есть несколько Get
вызовов, и каждый из них async
, вам придется подождать, пока весь результат не будет collected
, а затем установить его в состояние.Вы можете сделать это с помощью Promise.all
, который может wait
для всех Get
вызовов, которые должны быть разрешены в первую очередь, а затем установить данные в состояние.
Я бы сначала создал функцию async
и вызовите его в componentDidMount
.
componentDidMount() {
this.fetchAllData();
}
Затем внутри этого метода дождитесь разрешения всех Promises
и установите его в состояние, как только мы получим данные.Возможно, вам придется заключить всю функцию в блок try..catch
, чтобы в случае отклонения обещания из-за сбоя сетевого вызова вы могли обработать его соответствующим образом.
fetchAllData = async () => {
const manufacturers = await Promise.all(
this.props.participants.map(participant =>
Get("manufacturer/" + participant.id, ""))
)
this.setState(manufacturers)
};