javascript - 使用reactjs进行多排序表

标签 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

最佳答案

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'
    )
  });
}

关于javascript - 使用reactjs进行多排序表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47836194/

相关文章:

javascript - 如何避免或解决下取整函数和错误表示的整数?

javascript - react native : Android is not showing all images (even though they are the same)

reactjs - 在挂载组件上对 react 表进行排序

javascript - 如何在Reactjs应用程序中添加带有超链接的 'a'链接标签

javascript - 使用 babel CLI 进行转译

javascript - 未捕获的类型错误 : Type error when using onload

javascript - JQuery .hide() 不会突然隐藏按钮

javascript - AppBar color secondary with Select material-ui-next

javascript - 如何在类中创建元素创建方法

javascript - 'Object.assign' 在更深层次上改变状态