【发布时间】:2018-02-22 23:56:17
【问题描述】:
我在一个<form> 中有两个checkbox。 <form> 有一个 onChange={this.checkBoxOnChange} 分配给它,它会在表单的每次更改时触发 checkBoxOnChange(event){..} 函数。我正在尝试将状态 (Log) 映射到状态(即它们是否被检查)。所以,我最初将那里的值设为false,因为它们没有被检查,然后在每个事件上我试图分别更改那里的值(即如果为假,则为真,反之亦然)。
在关注this SO 帖子时,我尝试了这个:
(event.target.value=='BILLDED') && billed=(!billed)
通过这样做,我得到:
语法错误:赋值表达式左侧无效
然后我尝试了这个:
(event.target.value=='BILLDED') ? (billed=(!billed)) : null
但是,它会在每个 onChange 上给我 BILLED:true(当点击 BILLED 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);
}
- 代码有什么问题?
- 我不能在这种情况下使用内联语句吗?
- 有没有更好、更简洁的方法?
【问题讨论】:
标签: reactjs ecmascript-6 inline ternary-operator