ReactTable:根据容器高度更改 pageSize #552

ReactTable: changing pageSize based on container height #552

我已经完成了根据我的实时可调整大小容器更改 pageSize 的操作:在我更改页面之前它运行良好。

一旦我改变页面,如果我降低容器的高度,table的高度不能低于我改变页面时的高度。

换句话说,当我更改页面时(例如,从第 1 页到第 2 页),假设高度为 360px,约 12 行,如果我提高 360px 行 "added" 平滑,但是当我低于 360px 时,table 的高度不再改变。

注意:在更改页面之前一切正常。

export default class Table extends React.Component {

  constructor() {
    ...
  }

  componentWillReceiveProps(newProps) {
    if (this.props.y != newProps.y) {
      // size row
      let rowHeight = 32.88;
      // size resizable panel
      let panelHeight = newProps.y;
      // size of the extra y of the table (header + footer)
      let extraTable = 27 + (this.props.x < 650 ? 75 : 45);
      // setting pageSize of the table
      this.setState({pageSize: parseInt((panelHeight - extraTable) / rowHeight)});
    }
  }

  render() {
    return (
      <ReactTable
        data={this.props.data}
        columns={this.props.columns}
        pageSize={this.state.pageSize} 
      />
    )
  }
}

Github 有人告诉我这是一个实施问题,但我觉得它可以解决。有人知道怎么做吗?

通过使用 defaultPageSize 而不是 pageSize,并更改组件的 key 以强制重新渲染(基于 pageSize 本身)解决了:

render() {
    return (
      <ReactTable
        key={this.state.pageSize}
        data={this.data}
        columns={this.columns}
        defaultPageSize={this.state.pageSize} 
        showPageSizeOptions={false}
      />
    )
  }