标签导航:

ant design table展开行后如何修改同一行其他列的样式?

Ant Design Table展开行样式自定义详解

Ant Design的Table组件提供expandable属性方便实现表格行展开收起功能。但若需在展开行时动态修改同一行其他列样式(例如文字颜色),该如何操作呢?本文将详细讲解如何根据展开状态调整同一行其他列的样式。

问题:使用Ant Design Table组件并配置expandable属性后,点击展开行,如何更改同一行其他列(例如'name'列)样式,比如文字颜色?

解决方案:关键在于利用expandedRowKeys属性。expandedRowKeys属性存储当前所有展开行的key值。可在列的render方法中访问expandedRowKeys,判断当前行是否展开,并根据状态动态调整样式。

具体实现:在columns属性中,为需修改样式的列(例如'name'列)设置render函数。在render函数中,通过判断expandedRowKeys是否包含当前行的key值,决定是否应用不同样式。

示例:表格数据如下:

const data = [
  { key: 1, name: 'john doe', age: 30 },
  { key: 2, name: 'jane doe', age: 25 },
];

columns配置如下:

const columns = [
  {
    title: 'Name',
    dataIndex: 'name',
    key: 'name',
    render: (text, record, index) => {
      const isExpanded = expandedRowKeys.includes(record.key);
      return <span style={{ color: isExpanded ? 'red' : 'black' }}>{text}</span>;
    },
  },
  // ... other columns
];

render函数判断expandedRowKeys是否包含当前行key值。是则文字颜色为红色,否则为黑色。点击展开行时,对应行'name'列文字颜色会改变。 需在组件状态中维护expandedRowKeys的值,通常通过Table组件的onExpand事件更新。

通过此方法,可灵活控制展开行时其他列样式,实现更丰富的交互效果。 记住,你需要将 expandedRowKeys 作为组件状态进行管理,并在 onExpand 事件中更新其值。