Я пытаюсь заполнить компонент TreeView по запросу. Я получаю данные в функции componentDidMount, а затем вставляю эти данные в массив в основном состоянии компонента. ComponentDidUpdate используется для установки массива данных в корневой узел древовидного представления. Дело в том, что древовидное представление не отображает данные, если они не поступают статическим образом, по запросу они просто ничего не показывают. Вот код:
constructor (props) {
super(props);
this.state = {
data: []
};
this.tree = {
idx: 0,
descript: 'Root',
collapsible: true,
collapsed: false
};
}
receivingData = (data = []) => {
this.setState({data: data});
}
componentDidMount () {
fetchData(this.receivingData);
}
componentDidUpdate (prevProps, prevState) {
if (prevState.data.length !== this.state.data.length) {
this.tree.children = [];
for (let x of this.state.data) {
this.tree.children.push({
idx: x.idx,
descript: x.name,
collapsible: true,
collapsed: false
});
}
}
}
А это метод рендеринга:
render () {
console.log('getting here', this.tree);
return (
<div>
<TreeView
onNodeSelectionChange={this.onTreeNodeSelection} ref={this.treeViewContainerRefBuilder}
data={this.tree} selectLeavesOnly={false} singleSelect/>
</div>
</div>
);
}
Журнал консоли показывает мне изменения дерева, но TreeView отображается только один раз. Что я делаю неправильно?