我基本上希望使用 react-virtualized Table 来做到这一点: https ://bvaughn.github.io/react-virtualized/?component=ScrollSync#/components/Table
使用可滚动的表格主体制作粘性页脚,如页眉。
我在 AutoSizer 中为页眉+正文和页脚创建了 2 个表格。但是当第一个表格滚动时,我的页脚宽度不正确:screenshot。我该如何解决?或者通过其他方式实现粘页脚
<AutoSizer>
{({ height, width }) => {
const tableColumns = this.getColumns(columns, width);
return (
<div>
<Table
width={width}
height={Math.min(height, HEADER_ROW_HEIGHT + BODY_ROW_HEIGHT * dataLength)}
rowHeight={bodyRowHeight}
onScroll={onScroll}
rowRenderer={rowRenderer}
rowCount={dataLength}
rowGetter={({ index }) => data[index]}>
{tableColumns}
</Table>
{total && <Table
width={width}
height={40}
gridClassName={'has-footer'}
disableHeader
rowHeight={bodyRowHeight}
rowRenderer={rowRenderer}
rowCount={1}
rowGetter={() => total}>
{tableColumns}
</Table> }
</div>
);
}}
更新
渲染方法
<AutoSizer>
{({ height, width }) => {
const tableColumns = this.getColumns(columns, width);
console.log('tableRef:', this.tableRef && this.tableRef.state);
return (
<div>
<Table
width={width}
height={Math.min(height, HEADER_ROW_HEIGHT + BODY_ROW_HEIGHT * dataLength)}
ref={this._setRef}
headerClassName={headerClassName}
headerHeight={headerRowHeight}
rowHeight={bodyRowHeight}
rowRenderer={rowRenderer}
rowCount={dataLength}
rowGetter={({ index }) => data[index]}>
{tableColumns}
</Table>
{total &&
<FooterComponent
rowData={total}
width={width - (this.tableRef && this.tableRef.state.scrollbarWidth || 0)}>
{tableColumns}
</FooterComponent>}
</div>
);
}}
_setRef = (ref) => {
this.tableRef = ref;
};