私は初心者です。孫の状態をどのように扱うべきかを理解するのに苦労しています(孫の状態を持つことは良い考えかどうか見てください)。React JS:孫の状態を設定する方法
私の質問は
1.それはthis.setState((prevState))
経由で孫を変更することは可能です...ですか?
2.州として悪い考えを持っていますか?
ここでは、コンポーネントのコンストラクタを示します。
constructor(props) {
super(props);
this.state = {
input: {
example: "",
},
invalid:{
example: false
},
};
this.handleChange = this.handleChange.bind(this);
this.submit = this.submit.bind(this);
}
私は孫と子としてthis.state.invalid
を見て、this.state.invalid.example
。
ここに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>
onClick={this.submit}
が発射されたとき、私は機能、「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 ,"
}));
}
}
、this.state.invalid.example
(すなわち変更)を設定することになっているが、上記のコードは動作しません。
多分、このアプリを分解して<div className="input">
を単一のコンポーネントにすることをお勧めします。そうする前に、孫をこのように設定することができるかどうかを明確にしたいと思います。
私はReactJSを勉強している私の周りの誰も知らないので、アドバイスをいただければ幸いです!
可能な複製:http://stackoverflow.com/questions/18933985/this-setstate-isnt-merging-states-as-i-would-expect – forrert
正確には私が探していたものではありません...しかしこれは非常に有益な共有してくれてありがとう! – Hiroki