保留手风琴状态和扩展的表行

时间:2019-09-27 14:14:00

标签: javascript reactjs antd

Ant Design中是否有任何方法可以捕获特定表行是否已扩展的状态,并在页面刷新或重新安装组件时(即,在SPA上的不同路径之间导航时)应用该状态?

还有办法使表格行的扩展像手风琴一样工作。即一次只能扩展一行?

在这一点上,我只是研究Ant-D,阅读文档并使用小代码段。

但是我找不到有关如何执行上述操作的文档(即,保存/恢复表/手风琴的状态),所以我不知道该怎么做。我当然可以构建自定义的片段,但是那会破坏拥有一个不错的框架的目的。

希望有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:2)

检查下一个示例,您应该参考的道具是:

  • onExpandedRowsChange
  • onExpand
  • expandedRowKeys
import { Table, Typography, Select, Radio } from 'antd';

const expandedRowRender = record => (
  <Typography.Text code>{record.key}</Typography.Text>
);

export default function App() {
  const [expandedRow, setExpandedRow] = useState(0);
  const [radioValue, setRadioValue] = useState('accordion');

  const [currentRow, setCurrentRow] = useState([]);
  return (
    <FlexBox>
      <Radio.Group
        style={{ width: 200 }}
        value={radioValue}
        onChange={e => setRadioValue(e.target.value)}
      >
        <Radio value="accordion">Accordion</Radio>
        <Radio value="rowState">rowState</Radio>
      </Radio.Group>
      {radioValue === 'accordion' ? (
        <Table
          dataSource={dataSource}
          columns={columns}
          onExpand={(isExpanded, record) =>
            setExpandedRow(isExpanded ? record.key : undefined)
          }
          expandedRowRender={expandedRowRender}
          expandedRowKeys={[expandedRow]}
        />
      ) : (
        <>
          <Typography.Title>{currentRow}</Typography.Title>
          <Table
            dataSource={dataSource}
            columns={columns}
            expandedRowRender={expandedRowRender}
            onExpandedRowsChange={setCurrentRow}
          />
        </>
      )}
    </FlexBox>
  );
}

Edit Q-58136315-TableRows