我有一个呈现复选框的React组件。问题是它需要两次点击才能变成选中,然后两次点击才能变成未选中。
JS:
import React, { Component } from "react";
class CheckboxRow extends Component {
constructor(props) {
super(props);
this.state = { checked: false };
}
inputChangedHandler() {
this.setState({ checked: !this.state.checked });
}
render() {
return (
<div className="checkbox-row">
<input
id={this.props.id}
type="checkbox"
onChange={() => this.inputChangedHandler()}
checked={this.state.checked}
/>
<label htmlFor={this.props.id} className="checkbox-row__label">
Label goes here
</label>
</div>
);
}
}
export default CheckboxRow;
那么,我需要做些什么,使复选框变成选中一次点击,并改变回未选中一次点击?
3条答案
按热度按时间xkftehaa1#
在盯着它看了几个小时后,我突然有了一个Eureka 时刻!我有一个
prevent.default()
的形式onChange
!删除prevent.default()
修复了它,感谢那些已经回复的人。xuo3flqw2#
更改状态时,不应直接访问旧状态,例如
而是做了
或者从onChange访问传递的事件。
ubof19bj3#
由于我也面临同样的问题,我继续前面的讨论,但是删除prevent.default并不会改变任何事情:
基本上,我使用react hook表单来进行高级过滤和倍数选择:
即使在第一次单击时捕获onChange事件,“checkbox”输入也需要两次单击才能真正选中:
参见第120行的示例:https://codepen.io/Marving972/pen/PoagGNP?editors=0010