この例のように動的な状態を作成できます。
constructor(props) {
super(props);
this.state = {};
}
この方法で状態を作成します。
func(name){
this.state[name];
}
そしてこれでsetState:
func2(name,value){
this.setState({[name]:value});
}
だから
this.func('color');
this.func('size');
私は持っthis.func.color
ていthis.func.size
ます。正しい?
できます。
しかし、私はこのようなものが欲しいです。すべての新しい動的状態を状態で作成したいと思います'names'
。
constructor(props) {
super(props);
this.state = {names:[]};
}
names
は正常な状態です。
func(name){
this.state.names[name];
}
func2(name,value){
this.setState({names:{[name]:value}:});
}
私はこの関数を呼び出します:
func('color');
func('size');
func2('color','red');
func2('size','larg');
私はconsole.log(this.state.names)
これで期待しています:
{color:'red',size:'larg'}
しかし、私は{size:'larg'}
(2番目の関数)しか得られません
私の何が問題なのですか?
もう一度names
呼び出すと、の値が上書きされますthis.setState
。
あなたは効果的にやっています:
this.setState({ names: { color: 'red' }});
this.setState({ names: { size: 'large' }});
プロパティを追加しようとしているオブジェクトを置き換えていないことを確認するためにObject.assign()
、func2
を使用することを検討してください。
func2(name,value) {
this.setState({
names: Object.assign(this.state.names, {[name]: value})
});
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加