2016-12-21 29 views
1

我在React代碼中有一個handleChange函數,我只是想知道語法。React handleChange語法

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[...]語法是property accessor syntax - 它相當於使用someobject.someproperty,除了將被訪問的屬性的名稱是方括號內的表達式的值。

例如,如果event.target.id的值爲'name'對於特定呼叫,那麼handleChange()方法將執行相當於this.setState({name: event.target.value})

+0

現在有意義!謝謝!我想我以前從來沒有真的使用括號記號! – mfkogan

1

所以在上面的代碼

newState是一個空的對象,newState[event.target.id]是辦法訪問obejct參數,所以如果我們這樣做

handleChange: function(event){ 

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

我們的價值event.target.value assiging對象的屬性,它如果它不存在,則爲event.target.id。假設如果event.target.id"name"event.target.value"Mike"。新狀態將變爲

newState = { 
    name: "Mike" 
} 
+0

我現在明白了!謝謝!我以前只使用過點符號,所以我沒有意識到它是什麼。謝謝! – mfkogan