【发布时间】:2020-09-14 17:50:16
【问题描述】:
我有一个 material-ui Table 并一直在其上实现多选功能。
我的多选应该表现如下:
- 选择复选框仅在悬停时出现在行首(当未选择任何内容时)
- 选择一行后,所有其他复选框将永久可见。
-
TableHead中的复选框在切换时将选择/取消选择Table中的所有行。
每一行都有自己独特的id。
我通过useState 挂钩维护一个名为idsOfSelectedRows 的Set,以跟踪当前选择的所有行。
每个TableRow 都有一个Checkbox,看起来像这样
<Checkbox
className={
idsOfSelectedRows.size === 0 &&
styles.rowSelectionCheckboxStyle
}
onChange={() => handleRowSelectionCheckboxClick}
checked={idsOfSelectedRows.has(row.id)}
/>
handleRowSelectionCheckboxClick 看起来像这样
const handleRowSelectionCheckboxClick = event => {
const idOfClickedRow = event.target.attributes.getNamedItem("id").value;
//If the checkbox has just become checked then add it to the idOfSelectedRows Set, otherwise remove it.
setIdsOfSelectedRows(
event.target.checked
? new Set(idsOfSelectedRows.add(String(idOfClickedRow)))
: () => {
idsOfSelectedRows.delete(String(idOfClickedRow));
return new Set(idsOfSelectedRows);
}
);
};
我的问题是单击行上的复选框没有响应。我可以通过单击TableHead 中的全选 Checkbox 将它们全部选中,但单击单个行中的复选框不会改变它们的状态?
这是一个完整的 CodeSandbox,再现了确切的问题。 我需要做什么才能使行中的复选框可以切换?
【问题讨论】:
标签: javascript html reactjs checkbox material-ui