- Первый вызов (Storage.list ('s3 bucket path')) возвращает список ключей.
- Для каждого ключа я делаю второй вызов (Storage.get ('key')), который возвращает URL
- Внутри первого и второго вызова API, я console.log и получаю правильныйданные мне нужны для каждого.
- this.setState прекрасно работает внутри первого вызова API, но не во втором.
Мой код:
state = { keyItems: [], urlItems: [] }
componentDidMount() {
Storage.list('')
.then(keyItems => {
console.log("keyItems: ", keyItems)
this.setState({ keyItems: keyItems })
/*for each photo key in the folder..*/
keyItems.forEach(function(keyItem) {
/*get the URL*/
Storage.get(keyItem.key)
.then(urlItem => {
console.log("urlItem: ", urlItem)
/*add URL item to state*/
/*ANY CALL TO this.setState HERE DOESN'T WORK, i've tried
even simple tests*/
this.setState(prevState => ({ urlItems:[...prevState.urlItems, { key: keyItem.key, source: urlItem } ]}))
})
.catch(err => {
console.log("error fetching photo URL", err)
})
})
})
.catch(err => {
console.log("error fetching photos keys", err)
})
}
Консоль:
- Я пытался делать вызовы от функций со стрелками за пределами componentDidMount, но все еще не могу получить доступ к this.setState
Спасибо!