第一次拿不到数据,第二次拿到的是第一次的数据,后面每次都是拿到前一次的数据
第一次拿不到数据,第二次拿到的是第一次触发的数据,后面每次拿到的都是前一次触发的数据
取数据:
getExpandData = (param) => {
getModelVersion(param).then((result) => {
if (result) {
this.setState({
subData: result, // 过滤之后的数据
});
}
});
};
嵌套的子表格展开:
expandFunction = (expanded, record) => {
const { showListDom } = this.state;
if (record) { // 未展开
const param = {
modelId: record.id,
};
this.getExpandData(param); // 进不去
const subList = this.state.subData.map((v) => {
return {
...v,
todo: v.status,
};
});
const dom = (
<Table
columns={this.detailsColumns}
onChange={this.handleSubTableChange}
dataSource={subList}
rowKey={subList.id}
pagination={false}
/>);
const Id = record.id;
const item = {};
item[Id] = dom;
this.setState({
showListDom: {
...showListDom,
...item,
},
});
}
};
render方法内:
<Table
dataSource={this.state.SampleData}
rowKey={record => record.id || record.key}
columns={columns}
onChange={this.handleStandardTableChange}
pagination={this.state.pagination}
loading={this.state.loading}
expandedRowRender={(record) => { return this.state.showListDom[record.id] || null; }}
onExpand={(expanded, record) => this.expandFunction(expanded, record) || null}
/>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
...肯定不行啊,
解决办法1,改造,回调进去
解决办法2,用async await改造,我就不写了
原因就是getExpandData是异步的, 你没有等待它返回数据就继续执行后面代码了。
解决方式就是getExpandData的回调函数中拿到数据后继续render