我在checkbox
中有两个<form>
。 <form>
分配了onChange={this.checkBoxOnChange}
,它会在表单中的每次更改时触发checkBoxOnChange(event){..}
函数。我正在尝试映射(日志)状态(即是否已选中)。所以,我最初将那里的值视为false
,因为它们未被检查然后在每个事件上我试图分别改变那里的值(即如果为假,则为真&反之亦然)。
在关注this SO帖子后,我尝试了这个:
(event.target.value=='BILLDED') && billed=(!billed)
通过这样做我得到:
语法错误:赋值表达式中的左侧无效
然后我尝试了这个:
(event.target.value=='BILLDED') ? (billed=(!billed)) : null
但是,它会在BILLED:true
onChange
上给我checkbox
(点击比尔render() {
return (
<div>
<form onChange={this.checkBoxOnChange}>
<input type="checkbox" name="invoicestatus" value="BILLDED" />BILLDED<br />
<input type="checkbox" name="invoicestatus" value="PENDING" />PENDING<br />
</form>
<ListData data={this.state.data}/>
</div>
);
}
时)
这是render方法中复选框的代码:
checkBoxOnChange()
这是同一个类(Component)中的 checkBoxOnChange(event){
var billed=false;
var pending=false;
// (event.target.value=='BILLDED') ? (billed=(!billed)) : null;
(event.target.value=='BILLDED') && billed=(!billed)
// (event.target.value=='PENDING') ? pending=(!pending) : null;
console.log("BILLDED:"+billed+" PENDING:"+pending);
}
函数:
HIGHLIGHTER_COLORS
答案 0 :(得分:3)
代码出了什么问题?
您将事件处理程序中的billed
变量初始化为false
,这就是为什么您总是得到true
而不是切换状态。
我不能在这种情况下使用内联声明吗?
你可以,你只需要将括号放在正确的位置:
(event.target.value == 'BILLDED') && (billed = !billed);
// ^
有没有更好,更简洁的方法?
使用正常的if
语句。它既简短又易读:
if (event.target.value == 'BILLDED') billed = !billed;
答案 1 :(得分:1)
然而,它给了我BILLED:每次onChange都是true(点击时) BILLED复选框)
这不是因为你使用如下的局部变量
var billed=false;
始终以false
开头?