【问题标题】:React-bootstrap-table - Expand component only after row click and not by defaultReact-bootstrap-table - 仅在行单击后展开组件,默认情况下不展开
【发布时间】:2020-07-23 16:52:28
【问题描述】:

我正在使用 react-bootstrap-table 来扩展行并显示其中的数据。

这是我的代码:

class PhoneSystem extends Component {

  isExpandableRow(row) {
    if (row.uniqueid > 0) return true;
    else return false;
  }

//this is called when user clicks a row
  onRowClick(row) {
      console.log("Inside row click",row.uniqueid);
      return this.expandComponent(row.uniqueid);
  }

  expandComponent(row) {
    console.log("Inside expand component:::::);
 }

  render() {
    
    const options = {
      onRowClick: this.onRowClick.bind(this),
    }
    
    return (
      <React.Fragment>
        <div className="animated fadeIn">
          <Row>
            <Col lg="12">
              <Card style={{ marginBottom: '100px' }}>
                <CardHeader>
                  <h5>Phone system</h5>
                </CardHeader>
                  <BootstrapTable data={this.state.productsData}  options={options} remote={true} striped hover search pagination = {true} fetchInfo={{ dataTotalSize: this.state.totalCount }}        
                  expandableRow={ this.isExpandableRow }
                  expandComponent={this.expandComponent.bind(this)}       
                  expandColumnOptions={ { expandColumnVisible: true } }>

                  <TableHeaderColumn isKey dataField="uniqueid" dataSort width="8%" tdStyle={{ whiteSpace: 'normal', wordWrap: 'break-word' }}>Call Unique Id</TableHeaderColumn>
                  <TableHeaderColumn dataField="userfield" dataSort={true} width="13%">Call Type</TableHeaderColumn>
                  <TableHeaderColumn dataField="callee_number" dataSort width="10%">Source</TableHeaderColumn>
                  <TableHeaderColumn dataField="action_type" dataSort width="17%">Action Type</TableHeaderColumn>
                  <TableHeaderColumn dataField="caller_number" dataSort width="8%">Destination</TableHeaderColumn>
                  <TableHeaderColumn dataField="start_time" dataSort width="8%">Start Time</TableHeaderColumn>
                  <TableHeaderColumn dataField="disposition" dataSort width="8%">Disposition</TableHeaderColumn>
                  <TableHeaderColumn dataField="talk_time" dataSort width="17%">Duration</TableHeaderColumn>
                </BootstrapTable>
              </Card>
            </Col>
          </Row>
        </div>
      </React.Fragment>
    );
  }
}

这是我的输出:

现在,正如您在输出控制台中看到的那样,展开组件函数在单击单行时被调用,并再次被调用 10 次。我希望仅在单击行后才调用展开组件函数。

所以我尝试从 BootstrapTable 组件中删除默认的expandComponent={this.expandComponent.bind(this)}

一旦我从 BootstrapTable 组件中删除 expandComponent,它就会向我抛出错误:

this.props.expandComponent 不是函数。

有什么解决办法吗?提前致谢。

【问题讨论】:

    标签: javascript reactjs bootstrap-table react-bootstrap-table


    【解决方案1】:

    试试下面

    expandableRow={(row) => {
      return this.isExpandableRow(row);
    }}
    
    expandComponent={(row) => {
      return this.expandComponent(row);
    }}
    

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 2020-10-02
      • 2013-09-20
      • 2021-09-12
      相关资源
      最近更新 更多