使用reactjs

时间:2017-12-15 16:19:09

标签: javascript reactjs ecmascript-6

为什么这段代码无法根据列进行正确排序的任何线索?

sort(key){
    this.setState({
      [`toggle-${key}`]: !this.state[`toggle-${key}`],
      data: sortBy(this.state.data, [key], this.state[`toggle-${key}`]).map(v => v)
    })
  } 
  render() {
    return (
      <div style={styles}>
        <table>
          <thead>
            {Object.keys(this.state.data[0]).map(v => {
              return(
                <th onClick={()=>this.sort(v)}>
                  {v.toUpperCase()}
                </th>
              )
              })}
          </thead>
          <tbody>
            {this.state.data.map(v=>{
              return(
                <tr>
                  <td>{v.id}</td>
                  <td>{v.name}</td>
                </tr>
              )
            })}
          </tbody>
        </table>
      </div>
    );
  }

国家的切换似乎是正确的,但反思只是第一次发生。

https://codesandbox.io/s/zqno7m7j4p

1 个答案:

答案 0 :(得分:1)

Lodash的_.sortBy()无法选择降序或升序。请改用_.orderBy()sandbox):

sort(key) {
  const columnState = !this.state[`toggle-${key}`];

  this.setState({
    [`toggle-${key}`]: columnState,
    data: orderBy(
      this.state.data,
      [key],
      columnState ? 'desc' : 'asc'
    )
  });
}