我有两个checkbox
in a <form>
. The <form>
有一个onChange={this.checkBoxOnChange}
分配给它并触发checkBoxOnChange(event){..}
函数对表单中的每一个变化都起作用。我正在尝试绘制地图(Log)状态(即是否检查)。所以,我最初将其值视为false
因为它们没有被检查,所以在每个事件中我试图分别更改它们的值(即如果为假则为真,反之亦然).
关注时this https://stackoverflow.com/questions/9232907/can-i-omit-the-else-in-an-inline-javascript-if-statement所以我尝试过这个帖子:
(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>
);
}
这是checkBoxOnChange()
同一类(组件)中的函数:
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);
}
- 代码有什么问题吗?
- 在这种情况下我可以不使用内联语句吗?
- 有没有更好、更简洁的方法?
代码有什么问题吗?
您初始化billed
事件处理程序中的变量false
,这就是为什么你总是得到true
而不是切换状态。
在这种情况下我可以不使用内联语句吗?
可以,只需将括号放在正确的位置即可:
(event.target.value == 'BILLDED') && (billed = !billed);
// ^
有没有更好、更简洁的方法?
使用正常的if
陈述。它更短且更具可读性:
if (event.target.value == 'BILLDED') billed = !billed;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)