【发布时间】:2017-06-02 08:47:35
【问题描述】:
我希望通过键盘处理更改与通过鼠标单击进行更改不同。为此,我创建了以下组件。我的问题是,当我使用箭头键和空格来选择单选按钮时,它先使用父 div 元素中的 onClick 方法,然后再使用输入元素中的 onChange 方法。这种行为的原因是什么,如何正确处理?
class Radio extends React.Component {
constructor(props) {
super(props);
this.onChange = this.onChange.bind(this);
this.onClick = this.onClick.bind(this);
this.state = { checked: false };
}
onChange() {
this.setState({ checked: !this.state.checked });
console.log('onChange');
}
onClick() {
this.onChange();
console.log('onClick');
}
render() {
return (
<div onClick={this.onClick}>
<input
type="radio"
checked={this.state.checked}
onChange={this.onChange}
/>
Click me!
</div>
);
}
}
ReactDOM.render(<Radio />, document.getElementById('root'));
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.2/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.2/react-dom.min.js"></script>
【问题讨论】:
标签: javascript html reactjs