【发布时间】:2019-04-06 11:33:28
【问题描述】:
我正在使用第三方组件来呈现树表及其正常流程,父组件通过传递所需的 Props 调用子组件。
道具: 1. 树(包含要呈现为树的实际数据) 2.排序顺序
import React, { Component } from 'react';
import TreeDataTable from 'cp-react-tree-table';
class TreeView extends Component {
static propTypes = {
tree: PropTypes.array,
sortOrd:PropTypes.any
};
static defaultProps = {
tree: [],
height: 0
};
constructor(props) {
super(props);
this.table = React.createRef();
this.state = {
sortOrder: ''
};
}
componentDidMount() {
this.props.tableRef(this.table);
}
componentWillReceiveProps({sortOrd}){
this.setState({sortOrder:sortOrd});
}
render() {
const { tree } = this.props;
return (
<div className="treeview">
// data attribute passes the data to form tree
<TreeDataTable ref={this.table} data={tree} className="treeview-body">
<TreeDataTable.Column basis="80%" renderCell={this.renderIndexColumn} />
</TreeDataTable>
</div>
);
}
我正在尝试根据父组件中的按钮单击(随之而来的状态更改)重新排序树表。
什么有效: 1.父组件的状态变化 2.父组件重新渲染 3. 使用更新的 props ( data, sortOrder ) 调用子组件
- 子组件被调用
- 子组件状态根据更新后的 props 更改
- 子组件重新渲染
问题: 子组件使用旧道具(数据)重新渲染
预期结果: 使用更新的道具(数据)重新渲染的子组件
作为一个普通的子组件,这应该可以工作,但由于我使用的是第三方组件,我怀疑是否缺少一些东西来使它与更新的数据一起重新渲染。
有没有办法,我可以让这个子组件使用更新后的道具(数据)重新渲染并显示更新后的树。
【问题讨论】:
标签: reactjs