【发布时间】:2021-02-17 03:54:19
【问题描述】:
我正在使用 Bootstrap 复选框和常规复选框。为什么 Bootstrap Checkbox 切换失败,而常规 input 字段切换成功?
onChange = (evt) => {
const target = evt.target;
const name = target.name;
const value = target.type === 'checkbox' ? target.checked : target.value;
this.setState({
[name]: value
});
this.props.onChange({ name, value });
};
<input
name="unlimited"
type="checkbox"
checked={this.state.unlimited}
onChange={this.onChange} />
<Checkbox
name="unlimited"
onChange={this.onChange}
checked={this.state.unlimited}
>
UNLIMITED {this.state.unlimited.toString()}
</Checkbox>
编辑 我最初发布代码时犯了很多错误。以上是修正后的代码。
编辑 我确信这是一个错误,因为 Bootstrap JS 库正在干扰see here。
【问题讨论】:
-
这可能是因为他们在幕后做了一些有趣的事情。您的 onChange 处理程序需要一个本机复选框事件。查看他们的文档,他们返回值而不是事件。您将不得不编写一个稍微不同的 onChange 处理程序。
-
我已经 console.logged 一切并且本地事件工作得很好,在
type == checkbox时为我提供了正确的值。checked值在真假之间正确切换。 -
你为什么要更新状态然后调用
this.props.onChange??你应该做一个或另一个。
标签: reactjs checkbox react-bootstrap