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

如何通过useState实现AntD表格单行列高亮?

AntD表格实现点击单行高亮的解决方案

你当前的问题是用布尔值active控制所有行的类名,导致点击任意一行后所有行都会应用green样式。要实现仅点击行高亮,需调整状态存储和类名判断逻辑:

修改步骤:

  • 将状态active从布尔值改为存储选中行的唯一标识(优先用数据自带的id字段,比rowIndex更可靠,避免数据排序后索引变化的问题)
  • 在rowClassName中判断当前行的标识是否与选中标识一致,一致则添加高亮类
  • 点击行时,将当前行的标识存入状态

修改后的完整代码:

const TableComponent = () => {
  // 存储选中行的id,初始为null表示无选中行
  const [activeRowId, setActiveRowId] = useState(null);

  return (
    <Table
      dataSource={dataSource}
      columns={columns}
      // 每行判断是否为选中行,是则添加green类
      rowClassName={(record) => record.id === activeRowId ? "green" : ""}
      onRow={(record) => {
        return {
          onClick: () => {
            // 点击时切换选中状态:当前行已选中则取消,否则选中
            setActiveRowId(activeRowId === record.id ? null : record.id);
          },
        };
      }}
    />
  );
};

export default TableComponent;

补充高亮样式:

需要在全局样式或组件样式中添加高亮样式:

.green {
  background-color: #e6ffed; /* 可根据需求自定义颜色 */
}

如果你的数据里没有id字段,也可以用rowIndex替代,但注意当数据排序、分页时,rowIndex会变化,用唯一标识更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:55:22