在下面的 React 类中,我在 div 容器中有一个复选框。我想点击容器来切换复选框。我还认为我需要绑定复选框输入本身的 onChange,以处理诸如当用户使用 Tab/spacing 来切换复选框的状态之类的事情(如果我没有指定 onChange,我也会收到来自 React 的警告,因为这是一个受控组件)。
我的问题是当我单击复选框本身时,两个事件处理程序都会触发,因此复选框的状态实际上并没有改变。我在 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
}); }
}