【发布时间】:2021-10-16 12:01:36
【问题描述】:
已经尝试过 useState,它是功能变体并尝试使用 useEffect(不允许在回调函数中使用)。
我被困住了。
我有一个父“表”组件,它呈现一个 TableHead 孩子和一个 TableBody 孩子。
TableHead 子项有一个复选框,单击该复选框时会在父项上执行回调函数。
此时,布尔 selectAll(来自 useState 设置器和值)应该切换(更改值)。
但它仍处于初始状态。
结果是 selectall 的标题复选框第一次触发并且重新渲染确实将正文中的所有行显示为选中,但随后取消选中“selectAll”确实触发回调,但“selectAll”仍然为 false并且所有行都保持选中状态。
父组件代码:
function OTable(props) {
const [selectAll, setSelectAll] = useState(false);
const onAllRowsSelected = useCallback(() => {
if (selectAll === false)
{
setSelectAll(selectAll => selectAll = true);
}
else
{
setSelectAll(selectAll => selectAll = false);
}
}
return (
<TableContainer>
<Table>
<OTableHead
onSelectAllClick={onAllRowsSelected}
setSelectAll={setSelectAll}
/>
<OTableBody
selectAll={selectAll}
/>
</Table>
</TableContainer>
怎么做? 谢谢
【问题讨论】:
标签: reactjs react-hooks state