【发布时间】:2021-02-03 15:55:31
【问题描述】:
我正在努力一次检查表格中的所有复选框。 我可以检查单个复选框,但我也希望选择检查 一个“主复选框”,它会检查所有其他复选框。
我创建了我的 React 组件的简化版本: https://codesandbox.io/s/lively-wildflower-fknn9
我正在努力解决两件事。
-
如果我们删除两个复选框的选中属性,我们可以手动检查每个复选框并将其打印到控制台。如果我们通过将checked 参数设置为
checked={checkAll}来覆盖它,我们可以单击All 复选框,并且复选框1 和2 都被选中。但是,它不会调用复选框的onChange属性,这意味着我无法记录检查。 -
如果我设置
checked={checkAll}属性,我基本上会覆盖复选框,这意味着复选框图标本身不会从选中变为未选中。然而,onChange属性被调用,我能够将更改记录到控制台。
我想单独选中两个复选框,并使用“主复选框”来选中两个复选框,并同时调用它们的onChange。
我该怎么做呢? 任何建议都会非常有帮助
【问题讨论】:
-
操作方法如下:codesandbox.io/s/serene-jackson-h6c4p?file=/src/App.js 关键是不要覆盖任何内容,而是在 all 复选框更改时简单地更改所有复选框的状态。
-
嗨。感谢您抽出宝贵时间。我能够采用您示例中的一些原则并使我的应用程序按预期工作。我使用一种状态来处理实际选定的项目。我的 UI 也有不同的状态(单击、全选、取消选择等等。)一旦我让两者同时并行工作,我就解决了我的问题。谢谢。您可以创建某种形式的我可以接受的一般性答案。
标签: javascript reactjs react-hooks