2015-06-21 180 views
0

我有一個react組件,我已經創建。在這一部分,我將其稱爲一般更新狀態的函數:爲什麼我的setState不起作用?

updateCheckbox: function(name, value) { 
    this.setState({name: value}); 
}, 

我檢查這個功能的value,我看到正確的value獲取調用和設置。然後調用render函數,因爲剛剛設置了狀態。當我進入render函數時,state尚未更新。

我意識到這是因爲我更新了一般的state。如果我將state的實際名稱放在setState函數中,則所有內容都會根據情況進行更新。

有沒有人知道這個解決方法?

回答

1

您需要使用Computed property name(在ECMA 6加)使用內部存儲name變量

updateCheckbox: function(name, value) { 
    this.setState({[name]: value}); 
}, 

bracket notation更廣泛的瀏覽器支持的價值

updateCheckbox: function(name, value) { 
    var temp={}; 
    temp[name]=value; 
    this.setState(temp); 
}, 
+0

請注意括號這裏與括號符號無關。 –

+0

@FelixKling你的意思是括號表示只有在使用像'obj_name [prop]'.right? – bugwheels94

+0

是的............ –