javascript - 处理选择所有复选框 - ReactJS
问题描述
嘿伙计们,我正在尝试在我的 chechbox 上分配一个功能,选择所有按钮以在单击按钮时翻转状态,但我做错了什么。有人可以帮助我吗?
我的状态:
constructor(props) {
super(props);
this.state = {
allCheckboxes: false
};
handleAllCheckboxes = (e) => {
const allCheckboxesChecked = e.target.checked
let checkboxes = document.getElementsByName('checkbox')
this.setState({
allCheckboxes: allCheckboxesChecked
})
console.log(allCheckboxesChecked)
我的单个复选框:
<Checkbox
checked={this.handleAllCheckboxes ? true : false}
name='checkbox'
color='default'
value={JSON.stringify({ documentId: rowData.documentId, documentNumber: rowData.documentNumber })}
onClick={this.handleCheckboxClick}
/>
我的全选复选框:
<Checkbox
onChange={this.handleAllCheckboxes}
indeterminate
/>Select All
问题是,无论我做什么,状态都保持不变。它不会翻转为 true 或 false 。
更新
更新
解决方案
嗨,您的 Checkbox 处理程序应该位于构造函数之外。
如下所示:
constructor(props) {
super(props);
this.state = {
allCheckboxes: true
};
}
handleAllCheckboxes = (e) => {
const allCheckboxesChecked = e.target.checked
let checkboxes = document.getElementsByName('checkbox')
this.setState({
allCheckboxes: allCheckboxesChecked
})
console.log(allCheckboxesChecked)
}
你写了 checked={this.handleAllCheckboxes ?true : false}看起来是错误的。因为 **this.handleAllCheckboxes 已经定义,因此它将始终返回 true。(因为函数始终可用。)**。其次,handleAllCheckboxes 也没有返回任何真/假。
推荐阅读
- ios - 使用 Swift / SwiftyJSON 将嵌套的 JSON 解析为字典
- powershell - Powershell中'set -e'(任何错误退出)的等价物是什么?
- groovy - Groovy:在 shell 模块中评估时,groovy 的linkedhashmap 被转换为新格式
- regex - 如何从正则表达式匹配中删除特定的字符串模式?不能使用 XML 解析器,它只能识别好的 XML 标签
- python - 如何在第一次鼠标单击时选择一个精灵,然后在第二次鼠标单击的位置创建一个新的精灵
- ios - 使用 AVPlayer 播放实时流
- wpf - WPF 窗口的简单 ControlTemplate(编辑副本)在 Blend for Visual Studio 2017 中不起作用
- node.js - 无法在本地运行 node.js 服务器
- android - 我无法在片段中加载数据 json
- javascript - 为什么 `this` 不在此代码段中的函数上下文中进行控制台?