2016-12-21 1 views
1

私のリアクションコードにはhandleChange関数がありますが、私は構文について疑問に思っています。React handleChange syntax

handleChange: function(event){ 

    var newState = {};    
     newState[event.target.id] = event.target.value; 
    this.setState(newState); 
}, 

var newStateは空のオブジェクトであり、それは空のオブジェクトに次のアレイ([ ])に置かれていますようにevent.target.idに見える場合は、配列への次のオブジェクトを置いたときに私の質問は、何が起こるのか?私もこれを正しく読んでいますか?

+0

あなたのアプリの初期状態はどのように見えますか? –

+0

あなたは配列に入れていません。オブジェクトのエントリだけが作成されています –

答えて

2

私は正しくこれを読んでいますか?

いいえこれはオブジェクト用の標準bracket notationアクセスです。

event.target.idが「a」の場合、オブジェクトは{a: event.target.value}のようになります。

+0

ありがとうございます!私は大括弧表記を使用していないし、私はちょうどそれが何であったか分からなかったと思います! – mfkogan

+0

ようこそ。私は解決した問題に印を付けておくことをお勧めします。 – Scimonster

2

someobject[...]の構文はsomeobject.somepropertyです。アクセスするプロパティの名前は大括弧内の式の値ですが、someobject.somepropertyと同じです。

たとえば、特定のコールでevent.target.idの値がである場合、handleChange()メソッドはthis.setState({name: event.target.value})に相当します。

+0

これは今や理にかなっています!ありがとうございました!前にブラケット記法を使ったことはありません。 – mfkogan

1

したがって、上記のコードで

newStateは空のオブジェクトであり、我々は

handleChange: function(event){ 

    var newState = {};    
     newState[event.target.id] = event.target.value; 
    this.setState(newState); 
}, 

をすれば、我々はどのオブジェクト属性に値event.target.valueをassigingされるようnewState[event.target.id]は、obejctパラメータにアクセスする方法であります既に存在しない場合はevent.target.idです。したがって、event.target.id"name"であり、event.target.value"Mike"であるとします。 newStateは

になります
newState = { 
    name: "Mike" 
} 
+0

私はそれを今理解しています!ありがとうございました!私はこれまでドット表記法を使っていたので、それが何であるか分からなかった。ありがとう! – mfkogan