antd分页多选

需求: Table切换分页时,保存历史多选数据

方法:antd提供了preserveSelectedRowKeys,类型为 Boolean,为 true时会在更新时记住之前选择的数据。(需要指定rowKey)

代码参考:

  const [modelSelectedRowKeys, setModelSelectedRowKeys] = useState<number[]>([]);
    const onSelectChange = (newSelectedRowKeys: React.Key[]) => {
    console.log('selectedRowKeys changed: ', newSelectedRowKeys);
    setModelSelectedRowKeys(newSelectedRowKeys as number[]);
  };
	<TableExt
	 rowKey="id"
	 key="id"
	 scroll={{ x: 1000 }}
	 columns={modelColumns}
	 dataSource={modelDataSource}
     pagination={{
        ...modelPagination,
        onChange: async (page, pageSize) => {
          await onGetMemberList({ pageNum: page, pageSize });
        },
        showTotal: (total, range) => `${range[0]}-${range[1]} 条/共${total}条数据`,
      }}
      rowSelection={{
        preserveSelectedRowKeys: true,
        onChange: onSelectChange,
        selectedRowKeys: modelSelectedRowKeys,
      }}
    />
antd 表格中开启多选功能需要在 `columns` 中设置 `checkboxSelection: true`。同时,需要在 `Table` 组件中设置 `rowSelection` 属性来指定选择的行。 具体实现方式如下: ```jsx import React, { useState } from 'react'; import { Table } from 'antd'; const dataSource = [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', }, { key: '3', name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', }, ]; const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, { title: 'Action', key: 'action', render: () => <a>Delete</a>, }, ]; const MultiSelectTable = () => { const [selectedRowKeys, setSelectedRowKeys] = useState([]); const onSelectChange = selectedRowKeys => { setSelectedRowKeys(selectedRowKeys); }; const rowSelection = { selectedRowKeys, onChange: onSelectChange, }; return ( <Table dataSource={dataSource} columns={columns} rowSelection={rowSelection} checkboxSelection /> ); }; export default MultiSelectTable; ``` 上面的代码中,我们定义了一个 `MultiSelectTable` 组件,其中包含一个 `Table` 组件,设置了 `dataSource` 和 `columns`。在 `Table` 组件中,开启了多选功能,同时指定了 `rowSelection` 属性来指定选择的行。我们还定义了一个 `selectedRowKeys` 状态,用于记录用户选择的行的 key 值,并通过 `onSelectChange` 函数来更新该状态。最后,将 `selectedRowKeys` 和 `onSelectChange` 传递给 `rowSelection` 属性,即可实现多选功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值