如何将一个函数用于具有不同dataField的多个表头

时间:2018-07-03 06:07:37

标签: javascript reactjs

所以我有一些对表格中的数字进行排序的函数:

sortNumbers1(a,b,order){
   if (order === 'desc') {
     return Number(b.newScore) - Number(a.newScore);
    } else {
     return Number(a.newScore) - Number(b.newScore);
  }
} 

sortNumbers2(a,b,order){
   if (order === 'desc') {
     return Number(b.oldScore) - Number(a.oldScore);
    } else {
     return Number(a.oldScore) - Number(b.oldScore);
  }
}  
<BootstrapTable data={this.props.resData}>
   <TableHeaderColumn dataField="oldScore" dataSort={true} sortFunct={this.sortNumbers2}>       
     Old Score
   </TableHeaderColumn>
   <TableHeaderColumn dataField="newScore" dataSort={true} sortFunct={this.sortNumbers1}>
     New Score
   </TableHeaderColumn>
</BootstrapTable>

如您所见,我必须为每个表头定义一个排序函数(因为它们具有不同的dataField),如果我有100个表头怎么办?

我的问题:有没有办法我只能定义一个函数并用于所有表头(例如,使用参数)

我试图使用一个函数并为数据字段传递一个参数,但我不知道如何正确执行。

1 个答案:

答案 0 :(得分:0)

您可以像这样定义用于对参数中的数据进行排序的字段:-

sortNumbersByField(a, b, order, field){
   if (order === 'desc') {
     return Number(b[field]) - Number(a[field]);
    } else {
     return Number(a[field]) - Number(b[field]);
  }
} 

<BootstrapTable data={this.props.resData}>
   <TableHeaderColumn dataField="oldScore" dataSort={true} sortFunct={this.sortNumbersByField}>       
     Old Score
   </TableHeaderColumn>
   <TableHeaderColumn dataField="newScore" dataSort={true} sortFunct={this.sortNumbersByField}>
     New Score
   </TableHeaderColumn>
</BootstrapTable>

在从 TableHeaderColumn 调用函数 sortNumbersByField 时,您的代码可以定义要对数据进行排序的列/字段。