Ich bin ein Anfänger Reagiere Programmierer, kämpfe um zu verstehen, wie ich mit Enkelstaaten umgehen soll (oder ob es eine gute Idee ist, Enkelkinder zu haben).React JS: Wie setze ich Enkelkinder?
Meine Fragen sind ...
1. Ist es möglich, die Enkelkinder über this.setState((prevState))
zu ändern?
2. Haben Enkel als Staaten eine schlechte Idee?
Um zu veranschaulichen, hier ist der Konstruktor einer Komponente.
constructor(props) {
super(props);
this.state = {
input: {
example: "",
},
invalid:{
example: false
},
};
this.handleChange = this.handleChange.bind(this);
this.submit = this.submit.bind(this);
}
Ich sehe this.state.invalid
als Kind und this.state.invalid.example
als Enkelkind.
Hier ist ein JSX.
<div className="input">
<input type="text" value={this.state.input.example || ''} onChange={this.handleChange} />
{ this.state.invalid.example ? <span> This input is invalid </span> : null }
</div>
//Here are similar input fields...
<button onClick={this.submit} type="button">Submit</button>
Wenn die onClick={this.submit}
abgefeuert wird, ich möchte die Eingabe in der Funktion bestätigen, ‚this.submit‘.
submit(){
for (var key in this.state.input) {
if(!this.state.input[key]){
this.setState((prevState, key) => ({
invalid[key]:true, //This causes an error, saying that "SyntaxError: Unexpected token, expected ,"
}));
}
}
In diesem Beispiel wird this.state.invalid.example
soll eingestellt werden (das heißt geändert), aber der obige Code funktioniert nicht.
Vielleicht ist es eine bessere Idee, diese App zu zerlegen und <div className="input">
eine einzige Komponente zu machen. Bevor ich das tue, möchte ich klären, ob es möglich ist, Enkel auf diese Weise zu gründen.
Da ich niemanden um mich herum kenne, der ReactJS lernt, wird jeder Ratschlag geschätzt!
Mögliche duplizieren: http://stackoverflow.com/questions/18933985/this-setstate-isnt-merging-states-as-i-would-expect – forrert
Nicht genau das, was ich gesucht habe ... aber das war sehr informativ. Danke für das Teilen! – Hiroki