【发布时间】:2017-11-03 19:51:57
【问题描述】:
我正在尝试按需填充 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 只呈现一次。我做错了什么?
【问题讨论】:
标签: reactjs components render