とSETSTATEを反応させます。は、私は次のコードスニペットを持つダイナミックキー
これは初期状態です。
this.state = {
heading: this.props.match.params.length > 1 ? "Edit Post" : "Create Post",
title: '',
category: '',
body: '',
author: ''
}
とSETSTATEを反応させます。は、私は次のコードスニペットを持つダイナミックキー
これは初期状態です。
this.state = {
heading: this.props.match.params.length > 1 ? "Edit Post" : "Create Post",
title: '',
category: '',
body: '',
author: ''
}
基本的なルールは次のとおりです。
我々はComputed property names概念を使用して、動的オブジェクトのプロパティ名を計算するために、任意のJS表現を使用することができます。そのためには、式を[]
に入れる必要があります。このよう
:
var obj = {
[10 * 20 + 1 - 5]: "Hello"
};
console.log('obj = ', obj);
ソリューション:
onChange(e) {
this.setState({
[e.target.id]: e.target.value
})
}
:は
あなたが投稿したコードを1として、あなたはこのように、[]
内e.target.id
を配置する必要があります
それとも、私たちはこのように、setState
関数にそのオブジェクトを渡し、その後、最初にそのオブジェクトを作成することができます。
onChange(e) {
let obj = {};
obj[e.target.id] = e.target.value
this.setState(obj);
}
また、あなたがprevState
は必要ありません。状態変数を新しい値で直接更新することができます。 prevState
は、カウンタの場合と同様に、新しい状態値が以前の状態値に依存する場合にのみ必要です。
これまでに試しましたが、このエラーが発生します。 'TypeError: 'setState'プロパティを読み取ることができません。 undefined' –
つまり、 'onChange'メソッドをバインドするのを忘れてしまったので、この行をコンストラクタに入れてください:' this.onChange = this.onChange.bind(this) ':) –
ありがとう!あなたの時間を無駄にして申し訳ありません –
質問は何ですか? 'onChange'のコードはあなたのイベント要素のidとして動的状態キーを設定します。あなたはイベントを永続化する必要はありません。 'const {target:{value、id}} = e'を実行してから' id'と 'value'を使用してください。 –
Reactjs setState()の動的キー名?](https://stackoverflow.com/questions/29280445/reactjs-setstate-with-a-dynamic-key-name) –