running-elephant / datart

Datart is a next generation Data Visualization Open Platform
https://running-elephant.github.io/datart-docs/
Apache License 2.0
1.98k stars 590 forks source link

分析数据图表,新建筛选过滤条件,死循环请求静态文件,页面崩溃 #2312

Open perfumescent opened 7 months ago

perfumescent commented 7 months ago

Datart Version

1.0.0-rc.3 Release Describe the bug 开始分析数据图表时,当新建筛选过滤条件,部分情况下,点击确定提交过滤条件后,会导致死循环请求静态文件,最终导致页面崩溃。 image 在代码src/app/components/ChartGraph/BasicTableChart/BasicTableChart.tsx 901行

        onCell: (record, rowIndex) => {
          const row = chartDataSet[rowIndex];
          const cellValue = row.getCell(c);
          const seriesName = chartDataSet.getFieldOriginKey(c);
          const { rowData } = getExtraSeriesRowData(row);
          return {
            uid: c.uid,
            cellValue,
            dataIndex: row.getFieldKey(c),
            sensitiveFieldName: chartDataSet.getFieldOriginKey(c),
            rowData,
            rowIndex,
            ...this.registerTableCellEvents(
              colName,
              seriesName,
              cellValue,
              rowIndex,
              rowData,
              c.aggregate,
            ),
          };
        },
当意外情况下,rowIndex越界,导致row对象为空。随后会发生死循环渲染。
qinlinwang commented 2 months ago

这是因为当从数据量比较大的页面翻页到数量量比较少的页面,会先触发 onResize。其实在loadingdata的时候是没必要触发resize事件的。把对应的依赖注释掉就可以了 。

image