Ich verwende ein Bootstrap-Kontrollkästchen und ein reguläres. Warum kann der Bootstrap Checkbox
nicht umschalten, während das reguläre Feld input
umgeschaltet werden kann?Bootstrap-Checkbox nicht umschalten
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>
EDIT ich ein paar Fehler gemacht, als ich ursprünglich Code geschrieben. Oben ist der korrigierte Code.
EDIT Ich bin überzeugt, dass dies ein Fehler ist, weil Bootstrap JS-Bibliothek ist, see here stören.
Es kann sein, weil sie etwas lustiges hinter den Kulissen tun. Ihr onChange-Handler erwartet ein natives Checkbox-Ereignis. Wenn sie ihre Dokumente betrachten, geben sie den Wert und nicht das Ereignis zurück. Sie müssen einen etwas anderen onChange-Handler schreiben. –
Ich habe console.logged alles und native Ereignisse funktionieren gut, mir den richtigen Wert wenn 'type == checkbox'. Der Wert "checked" wechselt korrekt zwischen "true" und "false". –
Warum aktualisieren Sie den Status und rufen dann 'this.props.onChange' auf? Du solltest das eine oder andere tun. –