reactjs - Reactjs 表可扩展行
问题描述
我正在尝试通过此链接使表格行可扩展
https://gist.github.com/markerikson/bd9f03e0808558c5951e02f1aa98c563
它工作得很好,但是当我尝试从 API 动态获取数据时,有一些延迟使数据无法在行点击时呈现。
目前,如果来自 API dataEntity 的这个数组 dataEntity 的循环将无法将数据推送到 itemRows 而如果我用静态数据 [0,1,2] 替换 dataEntity 将按预期呈现我如何延迟等待加载数据第一。
renderItem(item) {
const { classes } = this.props;
const clickCallback = () => { this.handleRowClick(item.Day); };
const itemRows = [
<TableRow key={"row-data-" + item.Day}>
<TableCell
align="left"
className={classes.TrowD}
style={{ fontSize: 11 }}
>
{`${new Date(item.Day).getDate()}-${new Date(item.Day).getMonth() + 1}-${new Date(item.Day).getFullYear()}`}
{this.state.groupByTitle ?
<Add
className={classes.iconAdd}
onClick={clickCallback}
/>
: null}
</TableCell>
<TableCell align="left" className={classes.TrowD}></TableCell>
<TableCell align="left" className={classes.TrowD}>{item.Hosts}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.Clicks}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.TrafficBack}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.Impressions}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.ApprovedQTy}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.ApprovedRevenue}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.HoldQTy}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.HoldRevenue}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.PendingdQTy}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.PendingRevenue}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.DeclinedQTy}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.DeclinedRevenue}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.CR}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.EPC}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.ECPM}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.QTY}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.NULL}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.Revenue}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.Payouts}</TableCell>
<TableCell align="left" className={classes.TrowD}>{item.Earnings}</TableCell>
</TableRow>
];
if (this.state.expandedRows.includes(item.Day)) {
let groupBy = this.state.groupByTitle == 'Affiliate' ? 'CompanyName' : 'Title';
const datafun = function (data) {
let dataEntity=data? Object.entries(data) : null
{
dataEntity.map((i) => {
itemRows.push(
<>
<TableRow key={"row-expanded-" + item.id}>
<TableCell align="left" className={classes.TrowD}>{item.id}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.points'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}> {'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}> {'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
<TableCell align="left" className={classes.TrowD}>{'item.percent'}</TableCell>
</TableRow>
</>
);
})
}
return itemRows
}
datafun();
getOffersStatisticsDetails(item.Day, item.Day, '8', '', '', '', '', '', '', '').then((res) => {
let data;
if (res.status == 200) {
data = this.groupBy(groupBy, res.data.data);
}
return data
}).then(datafun)
}
return itemRows;
}
解决方案
推荐阅读
- c# - Xamarin .NET API 使用 Refit 错误 Refit.ApiException
- asp.net-core - Visual Studio 2019 QuickWatch 在 ASP.NET Core Blazor WebAssembly Program.cs 文件中显示无法评估(Unable to evaluate)
- python - 从网页抓取时出现 IndexError
- python - 如何使用 django-two-factor-auth 在 django 中为现有用户获取 OTP 令牌
- javascript - UnhandledPromiseRejectionWarning: RangeError [EMBED_FIELD_VALUE]: MessageEmbed 字段值不能为空
- android - RxBLELibraries/RxAndroidBle:状态为 8(GATT_INSUF_AUTHORIZATION 或 GATT_CONN_TIMEOUT)
- angular - 拖动事件触发了几秒钟
- c# - meshbuilder AddPolygon() 方法的奇怪行为的原因是什么?
- automation - 如何从空手道 API 自动化中的功能文件中验证针对多个数据库实例的 API 响应?
- server - Recaptcha 将 Formmail 的“电子邮件”(发件人)字段替换为我的服务器地址。如果没有 Recaptcha,From 字段可以正常工作。为什么?