在单击表头时,只有sortDirection始终是ASC,如何将其更改为DESC,进行反应虚拟化

时间:2019-02-01 13:49:43

标签: reactjs sorting react-virtualized

//this function sort table data in ASC and DESC order
_sortTable({ sortBy, sortDirection }) {
   //console.log(event)
   console.log('sortBy='+sortBy+', sortDirection='+sortDirection);
   const tempList = _.sortBy(currentTableData , item => item[sortBy]);
   const sortedListData = sortDirection === SortDirection.DESC ? tempList.reverse() : tempList;
   this.setState({ sortBy, sortDirection, sortedListData });
   rowRendererData = sortedListData;
   this.tableRef.forceUpdateGrid();
}

在单击表的列标题时将调用此函数

sort={this._sortTable}
sortBy={this.state.sortBy}
sortDirection={this.state.sortDirection} 

<Table/>上。

但是单击表头时,sortDirection始终是ASCENDINGASC)。

如何将sortDirection更改为DESCENDINGDESC)?

2 个答案:

答案 0 :(得分:0)

函数似乎将sortDirection作为对象的属性, 那么您应该传递该参数:

sort={this._sortTable({sortDirection: SortDirection.DESC})}
 sortBy={this.state.sortBy}
 sortDirection={this.state.sortDirection}

答案 1 :(得分:0)

 _sortTable({ sortBy, sortDirection }) {

        this.setState(function(prevState) {
          return { sortDirection: prevState.sortDirection === SortDirection.ASC ? SortDirection.DESC : SortDirection.ASC } 
        });
       // console.log('sortBy='+sortBy+', sortDirection='+sortDirection);
       const tempList = _.sortBy(currentTableData , item => item[sortBy]);
       const sortedListData = this.state.sortDirection === SortDirection.DESC ? tempList.reverse() : tempList;
       this.setState({ sortBy, sortedListData });
       rowRendererData = sortedListData;
        this.tableRef.forceUpdateGrid();
     }