Shreyas Chorge
Shreyas Chorge

Reputation: 319

AntD rowSelection functional Component

I'm trying to grab the single element key in the table. But I get undefined How can I grab the id?

https://ant.design/components/table/#components-table-demo-expand-children

const [select, setSelect] = useState({
    selectedRowKeys: [],
    loading: false,
  });

console.log("selectedRowKeys", select);

const { selectedRowKeys, loading } = select;

const rowSelection = {
selectedRowKeys,
onChange: (selectedRowKeys) => {
  setSelect({
    ...select,
    selectedRowKeys: [...select.selectedRowKeys, selectedRowKeys],
  });
},
};

return (
<div>
  <Table
    columns={columns}
    rowSelection={rowSelection}
    dataSource={dataSource}
    loading={!props.employeeList}
  />
</div>);

Here's a screenshot of console.log()

Upvotes: 6

Views: 13798

Answers (1)

Chanandrei
Chanandrei

Reputation: 2421

You need to add a key prop on each object of dataSource array

const dataSource = [
  {
    key: 1,
    name: `Edward King 1`,
    age: 32,
    address: `London, Park Lane no. 1`
  },
  {
    key: 2,
    name: `Edward King 2`,
    age: 35,
    address: `London, Park Lane no. 2`
  }
];

then in your rowSelection object you need remove this code [...select.selectedRowKeys, selectedRowKeys], this will push to state if you deselect an item and select it again and result to duplications. It should be:

const rowSelection = {
    selectedRowKeys,
    onChange: (selectedRowKeys) => {
      setSelect({
        ...select,
        selectedRowKeys: selectedRowKeys
      });
    }
};

see your working code here

Upvotes: 9

Related Questions