我正在使用Bootstrap複選框和常規的複選框。爲什麼Bootstrap Checkbox
無法切換,而常規的input
字段成功切換?Bootstrap複選框不切換
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」值在true和false之間正確切換。 –
你爲什麼要更新狀態然後調用'this.props.onChange'?你應該做一個或另一個。 –