最简单的方式解决antd Table组件selectedRows翻页后不保留上一页已选中items
最简单的方式是使用Key来标识每一行数据,并在翻页时将选中的Key保存起来,然后在下一页加载数据时,根据保存的Key来判断是否选中该行。
具体步骤如下:
- 在Table组件中,添加一个属性
rowKey
,并将其值设置为每一行数据的唯一标识,例如行数据中的id
字段。
<Table rowKey="id" ... />
- 在Table组件外部定义一个state,用来保存已选中的行的Key。
const [selectedKeys, setSelectedKeys] = useState([]);
- 在Table组件的
rowSelection
属性中,通过selectedRowKeys
属性来设置已选中的行。
<Table rowSelection={{
selectedRowKeys: selectedKeys,
onChange: (selectedRowKeys) => setSelectedKeys(selectedRowKeys)
}} ... />
- 在翻页时,将已选中的Key保存起来。
const handlePageChange = (pageNumber) => {
// 保存已选中的Key
setSelectedKeys(selectedKeys);
// 处理翻页逻辑
// ...
};
- 在下一页加载数据时,根据保存的Key来判断是否选中该行。
const loadData = (pageNumber) => {
// 加载数据逻辑
// ...
// 根据已选中的Key来判断是否选中该行
const newSelectedKeys = selectedKeys.filter(key => {
return data.some(item => item.id === key);
});
setSelectedKeys(newSelectedKeys);
};
通过上述步骤,即可实现在翻页后保留上一页已选中的行
原文地址: http://www.cveoy.top/t/topic/iEoS 著作权归作者所有。请勿转载和采集!