await
может использоваться только внутри функций, которые объявлены с async
.Поэтому вы должны использовать await внутри этой функции, чтобы получить ваши данные и установить состояние.Кроме того, ваш код не является оптимальным, потому что он будет пытаться получать данные о каждом повторном рендеринге компонента.Лучше структурируйте свой класс и используйте методы жизненного цикла, такие как componentDidMount
, чтобы получить данные и сохранить их в состоянии.Впоследствии в рендере просто используйте состояние, чтобы отобразить его
export default class WhereSheGoes extends React.Component {
constructor (props) {
super(props);
this.state = {
destinations: '',
posts: '',
globals: '',
}
}
componentDidMount() {
retrieveBucket();
}
retrieveBucket = async () => {
const bucket = Cosmic.bucket({
slug: 'where-she-goes',
read_key: '',
write_key: ''
});
try {
let result = await bucket.getBucket()
console.log(result)
this.setState ({
destinations: _.filter(result.bucket.objects, {type_slug: 'destinations'}),
posts: _.filter(result.bucket.objects, {type_slug: 'posts'}),
globals: _.filter(result.bucket.objects, {type_slug: 'globals'})
});
} catch (err) {
console.log(err)
}
}
render() {
return (
<div>
<Header
destinations={this.state.destinations}
posts={this.state.posts}
globals={this.state.globals}
/>
<Feed
posts={this.state.posts}
destinations={this.state.destinations}
/>
</div>
);
}
}```