2017-10-16 12 views
1

とSETSTATEを反応させます。は、私は次のコードスニペットを持つダイナミックキー

これは初期状態です。

this.state = { 
     heading: this.props.match.params.length > 1 ? "Edit Post" : "Create Post", 
     title: '', 
     category: '', 
     body: '', 
     author: '' 
    } 
+0

質問は何ですか? 'onChange'のコードはあなたのイベント要素のidとして動的状態キーを設定します。あなたはイベントを永続化する必要はありません。 'const {target:{value、id}} = e'を実行してから' id'と 'value'を使用してください。 –

+0

Reactjs setState()の動的キー名?](https://stackoverflow.com/questions/29280445/reactjs-setstate-with-a-dynamic-key-name) –

答えて

4

基本的なルールは次のとおりです。

我々は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は、カウンタの場合と同様に、新しい状態値が以前の状態値に依存する場合にのみ必要です。

+0

これまでに試しましたが、このエラーが発生します。 'TypeError: 'setState'プロパティを読み取ることができません。 undefined' –

+2

つまり、 'onChange'メソッドをバインドするのを忘れてしまったので、この行をコンストラクタに入れてください:' this.onChange = this.onChange.bind(this) ':) –

+0

ありがとう!あなたの時間を無駄にして申し訳ありません –

関連する問題