Вы абсолютно можете вызвать два отдельных API. Проблема, с которой вы столкнулись, заключается в том, что последний вызов API-интерфейса перезаписывает данные, которые были сохранены из первого вызова API. Вот код, который это исправит.
componentDidMount(){
let api1 = `https://myapiexample1.com`;
let api2 = `https://myapiexample2.com`;
let promise1 = fetch(api1)
.then(response => response.json())
.then(json => json.items.map(item => {
return {
itemId: item.itemId
name: item.name
}
}))
let promise2 = fetch(api2)
.then(response => response.json())
.then(json => json.items.map(item => {
return {
img: item.img
}
}))
Promise.all([promise1, promise2])
.then(results => results[0].concat(results[1]))
.then(items => this.setState({itmes}))
}
Альтернативный подход, который не так чист, но похож на то, что вы в настоящее время делаете, - это обязательно включайте старое состояние при добавлении новых элементов в состояние:
this.setState({
items: newItems.concat(this.state.items)
})