Ich habe Kontrollkästchen, die ähnliche Dinge tun.Refactoring-Funktion in Reagieren mit Parametern
Funktionen:
constructor(props) {
super(props);
this.state = {
Dog:false,
Cat:false,
Fish:true,
clickedAnimal:true
};
this.checkCat = this.checkCat.bind(this);
this.checkDog = this.checkDog.bind(this);
this.checkFish = this.checkFish.bind(this);
}
checkCat(){
this.setState({Cat: !this.state.Cat});
}
checkDog(){
this.setState({Dog: !this.state.Dog});
}
checkFish(){
this.setState({Fish: !this.state.Fish});
}
Ankreuzfelder:
{this.state.clickedAnimal ?
<div className="animal-filter">
<p><input type="checkbox" checked={this.state.Cat} onChange= {this.checkCat)} /> Cat </p>
<p><input type="checkbox" checked={this.state.Dog} onChange={this.checkDog} /> Dog</p>
<p><input type="checkbox" checked={this.state.Fish} onChange={this.checkFish} /> Fish</p>
</div> : null}
ich dies in 1 Funktion Refactoring wollen und ihn mit einem Parameter: getting checkAnimal (Tier)
aber ich behalte Fehler wenn ich so etwas mache:
<input type="checkbox" checked={this.state.Fish} onChange={this.checkAnimal(Animal)} /> Fish
Gibt es eine Möglichkeit, einen Parameter über eine Funktion in einem Checkbox-Tag zu übergeben?
--edit
Dies ist der Fehler, den ich immer behalten, wenn ich einen Parameter checkAnimal hinzufügen:
nicht während einer bestehenden Zustandsübergang (wie in render
) aktualisieren. Render-Methoden sollten eine reine Funktion von Requisiten sein.
Danke für die Anregung! Mein Problem ist, dass das eigentliche -Tag keine Parameter akzeptiert. Also kann ich nicht zu diesem Schritt kommen. Ich bekomme immer einen Fehler "kann den Statusübergang nicht aktualisieren" – lost9123193
Könnten Sie noch mehr Code in Ihre Frage eingeben? Insbesondere Ihre Rendermethode, wo Ihre Eingaben sind. – jaybee
Ich habe gerade die Änderungen hinzugefügt, ich denke, dass das Problem auf das angeklickte Tier zurückzuführen sein könnte? bedingt habe ich innerhalb des html. Vielen Dank! – lost9123193