2017-01-26 71 views
1

我有一個看起來像這樣的狀態:傳播操作動態屬性更新

state: { 
    1: {show: false, description: 'one'}, 
    2: {show: false, description: 'two'}, 
    3: {show: true, description: 'three'} 
    } 

根據變量「ID」是來自於行動,我必須更新的狀態。

事情是這樣的:

var returnedState = {...state, [id].show : ![id].show} 

我怎樣才能做到這一點?

回答

3
{...state, 
[id]: { 
    show: !state[id].show 
} 
} 

它將複製原始狀態,然後切換來自操作的特定鍵/ ID的顯示值。

這裏是工作的代碼筆http://codepen.io/finalfreq/pen/mRBjZV

+0

它給我這個錯誤:模塊構建失敗:語法錯誤:意外標記{...狀態, [id]:{show:!state。[id] .show}}。意外的標記是!state。[id]之前的「[」 –

+1

因爲你把'!state。[id]'它需要'!state [id]' – finalfreq

0

以前的答案是正確的,但剛剛離開子對象的顯示屬性,去掉其他的。 爲了保持所有屬性,改變你想,你必須使用屬性:

{...state, [id] : {...state[id], show: !state[id].show}} 

具有添加...state[id]