Po kliknięciu tego pola wyboru znacznik wyboru nie znika, mimo że konsola console.log w procedurze onChange wskazuje, że stan został zmieniony na false. Z drugiej strony, gdy stan zmienia się za pomocą osobnego przycisku, znacznik wyboru odpowiednio włącza się i wyłącza.Pole wyboru Reakcja nie przełącza się
export default class TestComponent extends Component {
constructor(props) {
super(props);
this.state = {
is_checked: true
};
this.updateCheckbox = this.updateCheckbox.bind(this);
this.pressButton = this.pressButton.bind(this);
}
updateCheckbox(event) {
event.preventDefault();
this.setState({is_checked: !this.state.is_checked});
console.log(this.state.is_checked); // This logs 'false' meaning the click did cause the state change
console.log(event.target.checked); // However, this logs 'true' because the checkmark is still there
}
pressButton(event){
event.preventDefault();
this.setState({is_checked: !this.state.is_checked});
}
render(){
return (
<input type="checkbox" onChange={this.updateCheckbox} checked={this.state.is_checked} ></input>
<button onClick={this.pressButton}>change checkbox state using button</button>
);
}
}
wiem, że to było trochę czasu, ale jakoś zaakceptowane odpowiedź jest mylące (choć nie źle). Poza tym myślę, że nie powinieneś rozwiązywać tego problemu z dwukierunkowym wiązaniem, tak jak to robiłeś we własnej odpowiedzi. – ftor