【发布时间】:2016-04-11 04:43:48
【问题描述】:
在下面的 React 类中,我在 div 容器中有一个复选框。我想点击容器来切换复选框。我还认为我需要绑定复选框输入本身的 onChange,以处理当用户使用制表符/间距来切换复选框状态时(如果我也收到来自 React 的警告) 不要指定 onChange,因为这是一个受控组件。
我的问题是,当我单击复选框本身时,两个 事件处理程序都会触发,因此复选框的状态实际上并没有改变。我在 handleCheckboxChange 中尝试了 e.preventDefault 和 e.stopPropagation 但似乎都没有做任何事情。
export default class Item extends React.Component{
constructor(){
super();
this.state={
IsSelected: false
}
}
render(){
return (
<div className="item">
<div className="checkbox-container" onClick={this.handleContainerClick.bind(this)}>
<input type="checkbox" checked={this.state.IsSelected} onChange={this.handleCheckboxChange.bind(this)} />
</div>
</div>
);
}
handleCheckboxChange(e){
this.setState({
IsSelected: !this.state.IsSelected
});
}
handleContainerClick(){
this.setState({
IsSelected: !this.state.IsSelected
}); }
}
【问题讨论】:
标签: reactjs