Невозможно получить данные при использовании индекса массива с контентом CMS
constructor() {
super();
this.state = {
partners: [],
}
}
client = contentful.createClient({
space: process.env.REACT_APP_CONTENTFUL_SPACE_ID,
accessToken: process.env.REACT_APP_CONTENTFUL_ACCESS_TOKEN
})
componentDidMount() {
this.client.getEntries({
'content_type': 'partnersCollection',
'order': 'sys.createdAt',
})
.then(response => {
this.setState({
partners: response.items
})
})
.catch(console.error);
}
render(){
console.info("SIDE BAR RESULT: ", this.state.partners)
console.info(this.state.partners[0])
return null;
}
Console.log("SIDE BAR RESULT: ", this.state.partners)
отобразит все результаты содержательной cms. При использовании с примером индекса массива this.state.partners[0].fields
появится ошибка
Cannot read property 'fields' of undefined
Кто-нибудь знает, почему с индексом массива это вызовет сообщение об ошибке?
В исходном состоянии - this.state.partners
пустой массив, поэтому поиск this.state.partners[0].fields
выдаст ошибку
вам нужно поставить галочку в рендере
if (this.state.partners.length > 0) {
this.state.partners[0].fields
}
Как только обещание будет разрешено, оно установит state.partners
в componentDidMount()
, render()
обновится.