You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-table v7 useSortBy点击列时aria-sort错误设置到相邻列

问题原因与解决方案

问题根源

你遇到的问题是因为渲染表头<th>时,错误使用了全局/共享的排序状态变量,而非react-table为每一列column实例提供的内置排序属性。当触发排序时,react-table只会更新当前点击列的isSorted和isSortedDesc属性,但你的判断逻辑未绑定当前列的这两个属性,导致所有列复用同一状态,出现相邻列aria-sort被错误修改的情况。

修复代码

将表头的aria-sort属性判断逻辑,改为基于当前列column对象的内置属性:

<th
  {...column.getHeaderProps(column.getSortByToggleProps())}
  aria-sort={
    column.isSorted
      ? column.isSortedDesc
        ? 'descending'
        : 'ascending'
      : 'none'
  }
>
  {column.render('Header')}
  {/* 可选:添加可视化排序指示器 */}
  {column.isSorted ? (column.isSortedDesc ? ' 🔽' : ' 🔼') : ''}
</th>

关键说明

react-table的每一列column对象自带以下排序相关属性:

  • column.isSorted:当前列是否处于排序状态(布尔值)
  • column.isSortedDesc:当前列是否为降序排序(布尔值)

直接引用这两个属性后,每一列的aria-sort会独立响应自身的排序状态,不会再出现跨列干扰的问题。修改后点击“First Name”列时,只有该列的aria-sort会根据排序方向切换,其他列保持none状态。

内容的提问来源于stack exchange,提问作者Pajama_Jeans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:15:39