У меня есть компонент, где я хочу, чтобы отобразить над массив данных, как это:Лучший способ отображения более асинхронных данных в React
render() {
return (
<List>
{this.props.data.days.map(function(item){
return (
<ListItem>Hej</ListItem>
);
})}
</List>
);
}
props.data
это асинхронное данные выбираемые в качестве родительского компонента и передается в качестве состояние к этому компоненту. Это означает, что когда этот компонент сначала отображается, this.props.data
не определен, и я получаю сообщение об ошибке Cannot read property 'map' of undefined
. Каков предпочтительный способ справиться с этим? Должен ли я что-то делать в разных жизненных циклах или в конструкторе?
Я не использую Flux или Redux.
Я попытался propTypes настройки по умолчанию, например:
class SingleCompetition extends Component {
static defaultProps = {
data: { days: [] },
}
render() {
let competition = this.props.data;
return (
<List heading="sunday 150 starts">
{this.props.data.days.map(function(item){
return (
<ListItem>Hej</ListItem>
);
})}
</List>
);
}
}
Но тогда я получаю эту ошибку: Cannot read property 'map' of undefined. Cannot read property '__reactInternalInstance$pnbhyoz0ysdjwgvypz8q9qkt9' of null
эти методы являются устаревшими в ES6 –
@RafiUdDaulaRefat, я обновил свой ответ. –
Я действительно пробовал это, но я получаю сообщение об ошибке именно этого. Я обновил свой вопрос с ним – stinaq