Hier reagieren ist meine aktuellen Code:Wahre und falsche Radiobuttons in
Der Zustand, in meiner Komponente
this.state = {
name: '',
sample: '',
description: '',
isPublished: null,
};
Hier wird der Handler für die Radio-Buttons
_handleRadio(event) {
let value = true;
if (typeof event.currentTarget.value === 'string') {
(event.currentTarget.value === 'true' ? value = true : value = false);
}
this.setState({isPublished: value});
}
Und schließlich hier sind meine Optionsfelder
<div className="radio">
<label><input type="radio" name="isPublished" value="true" onChange={this._handleRadio} />Yes</label>
</div>
<div className="radio">
<label><input type="radio" name="isPublished" value="false" onChange={this._handleRadio} />No</label>
</div>
Entschuldigung für die schlechte Formatierung, das Kopieren und Einfügen meines Codes hier ist nicht so gut gelaufen. Wenn ich versuche, es zu reparieren, mache ich es noch mehr durcheinander.
Also gerade jetzt, wie es ist, wird der Zustand geändert, was genau das ist, was ich will. Aber wenn ich die POST-Anfrage an meine API sende und mache, kehrt der isPublished-Status zu true zurück.
Hier ist meine einreichen Handler
_handleSubmit(event) {
event.preventDefault();
event.stopPropagation();
const sampleObj = this.state;
console.log(sampleObj);
api.post('samples', sampleObj).done((result) => {
console.log('Sample Saved!');
this.context.router.push(`${result.id}/`);
}).fail((error) => {
console.log('failed');
console.log(error);
});
}
Warum hat der Staat von isPublished Rückkehr zu wahren während der einreichen, auch nachdem er auf false zu ändern?
Ich habe das Gefühl, Ihre Blockierung in _handleRadio-Methode ist der Übeltäter, versuchen Sie eine console.log() hinzufügen, um zu sehen, ob es getroffen wird und Sie erhalten den richtigen Wert aus Ihrer Auswahl. –
@JustinHerter habe es gerade versucht, alles scheint zu feuern. Ich dachte das gleiche zuerst – Jake
Verwenden Sie die Callback-Methode von SetState, um den Wert von isPublished nach der Einstellung zu überprüfen, wie dies this.setState ({isPublished: Wert}, Funktion() {console.log ("state:", dies .Zustand)}); Stellen Sie sicher, dass die Dinge so eingestellt werden, wie wir es erwarten würden, und fahren Sie dann mit dem Debugging fort. –