猿问

第一次拿不到数据,第二次拿到的是第一次的数据,后面每次都是拿到前一次的数据

第一次拿不到数据,第二次拿到的是第一次触发的数据,后面每次拿到的都是前一次触发的数据
取数据:
getExpandData=(param)=>{
getModelVersion(param).then((result)=>{
if(result){
this.setState({
subData:result,//过滤之后的数据
});
}
});
};
嵌套的子表格展开:
expandFunction=(expanded,record)=>{
const{showListDom}=this.state;
if(record){//未展开
constparam={
modelId:record.id,
};
this.getExpandData(param);//进不去
constsubList=this.state.subData.map((v)=>{
return{
...v,
todo:v.status,
};
});
constdom=(
columns={this.detailsColumns}
onChange={this.handleSubTableChange}
dataSource={subList}
rowKey={subList.id}
pagination={false}
/>);
constId=record.id;
constitem={};
item[Id]=dom;
this.setState({
showListDom:{
...showListDom,
...item,
},
});
}
};
render方法内:
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)=>{returnthis.state.showListDom[record.id]||null;}}
onExpand={(expanded,record)=>this.expandFunction(expanded,record)||null}
/>
Qyouu
浏览 1215回答 2
2回答

哆啦的时光机

原因就是getExpandData是异步的,你没有等待它返回数据就继续执行后面代码了。解决方式就是getExpandData的回调函数中拿到数据后继续render
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答