Две вещи:
Как уже упоминалось @karahan, вы неправильно устанавливаете свое состояние.
this.setState({ rows: complaints });
должно быть что-то вроде:
this.setState(prevState => { data: { ...prevState.data, rows: complaints } });
Однако этого, вероятно, будет недостаточно. Вы извлекаете свои данные у componentDidMount
родителя и устанавливаете свое состояние в componentDidMount
ребенка. Однако componentDidMount
дочернего элемента всегда запускается первым, если они монтируются одновременно, и запускается только один раз. Это означает, что с вашей настройкой, props.complaints
вашего ребенка может быть пустым в componentDidMount
.
Я бы решил эту проблему, не используя state в компоненте вашего ребенка. Редко есть веская причина хранить одно и то же состояние в нескольких компонентах (в этом случае вы храните одно и то же в родительском и дочернем элементах). Просто используйте ваш реквизит, который всегда будет актуален в вашей функции рендеринга. Ваш рендеринг MDBDataTable
должен выглядеть примерно так:
<MDBDataTable striped bordered small data={{ ...this.state.data, rows: this.props.complaints }} />
Если по какой-то причине вам абсолютно необходимо хранить complaints
в состоянии ребенка, вам следует либо вместо этого получить данные у ребенка, либо просмотреть getDerivedStateFromProps
и componentDidUpdate
. Однако вряд ли вам понадобится такая настройка.