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

如何在antd Table中使用onClick获取点击行值并实现指定单元格触发展开?

针对你的两个疑问的实现方案如下:

常见误区提前说明

你当前写在expandable配置里的onClick是展开图标专属的点击回调,第一个参数是布尔值代表展开/收起状态,第二个参数才是当前行数据,不是事件对象,所以你原来写的e.target.value是取不到值的,属于误用。


1、实现仅点击特定单元格触发行展开

你已经开启了expandRowByClick: true,这个配置会默认触发整行点击展开,要实现指定单元格触发,必须先把这个配置关闭,改用受控模式控制展开状态即可,完整代码示例:

import { useState } from 'react'
import { Table } from 'antd'

// 省略其他逻辑代码
const [expandedRowKeys, setExpandedRowKeys] = useState([])

// 列配置,给需要触发展开的单元格加点击事件
const tableColumns = [
  // 其他列的配置
  {
    title: '展开操作',
    dataIndex: 'expandTrigger',
    render: (_, record) => {
      // record就是当前行的完整数据
      return <span onClick={() => toggleExpand(record.id)}>点击展开该行</span>
    }
  }
]

// 展开/收起切换逻辑
const toggleExpand = (rowId) => {
  setExpandedRowKeys(prev => 
    prev.includes(rowId) 
      ? prev.filter(id => id !== rowId) 
      : [...prev, rowId]
  )
}

// Table组件配置
<Table
  components={components}
  bordered
  dataSource={dataSource}
  columns={tableColumns}
  expandable={{
    expandedRowRender,
    expandRowByClick: false, // 关闭默认整行点击展开
    expandedRowKeys: expandedRowKeys, // 绑定受控的展开行key
    // 如果还要保留默认的展开图标,补充下面的onExpand配置同步状态即可
    onExpand: (expanded, record) => {
      toggleExpand(record.id)
    }
  }}
/>

2、获取点击行数据渲染展开区域

不需要额外做捕获逻辑,antd Table的expandedRowRender自带当前行数据作为入参,直接用即可:

const expandedRowRender = (record) => {
  // record就是你点击展开的那一行的完整数据,所有字段都可以直接取
  return (
    <div>
      <p>当前行唯一编码:{record.id}</p>
      {/* 在这里写你需要渲染的对应业务内容 */}
    </div>
  )
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:45:06