紅糖糍粑
2023-05-11 16:20:56
所以我有一個用選擇/取消選擇所有復選框選項實現的 antd 表。如果用戶只選擇了幾個復選框,然后在單擊標題處的復選框時,我想做什么,應該重置選定的復選框。當前行為是選擇所有復選框(行)。以下是我的rowSelection代碼const rowSelection = { onSelectAll: (selected: any, selectedRows: any, changeRows: any) => { if(selectedRows.length !== 15){ console.log("reset checkboxes"); } }, onChange: (selectedRowKeys: any, selectedRows: any) => { setSelectedRows(selectedRows); }, getCheckboxProps: (record: any) => ({ disabled: record.name === "Disabled User", name: record.name, }), };
1 回答

慕容森
TA貢獻1853條經驗 獲得超18個贊
一種解決方案是使選定的行受控。
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const rowSelection = {
selectedRowKeys: selectedRowKeys,
onSelectAll: (selected, selectedRows, changeRows) => {
if (selectedRowKeys.length !== 0) {
setSelectedRowKeys([]);
}
},
onChange: (selectedRowKeys, selectedRows) => {
setSelectedRowKeys(selectedRowKeys);
}
};
當您單擊行上的復選框時,該onChange函數將執行并設置選定的行鍵。當您單擊標題處的復選框時,該onChange函數將再次執行并設置所有行鍵,然后onSelectAll(注意 setState ononChange不會立即生效)如果有多個選定行(on state),則重置所有選定的行鍵).
添加回答
舉報
0/150
提交
取消