2017-03-08 29 views
0

如果我有像的狀態下對象:在一個終極版減速器更新consisiting對象的數組的狀態無突變

[{ 
    "value":"e1", 
    "label":"[email protected]", 
    "domain":"d1", 
    "selected":false 
}, 
{ 
    "value":"e2", 
    "label":"[email protected]", 
    "domain":"d1", 
    "selected":false 
}, 
{ 
    "value":"e3", 
    "label":"[email protected]", 
    "domain":"d1", 
    "selected":false 
}] 

和動作對象

[{ 
    "value":"e1", 
    "label":"[email protected]", 
    "domain":"d1", 
    "selected":false 
}] 

,我怎樣才能在改變行動對象「選擇」爲真,並分別更新狀態,而不使用最好純粹的ES6函數進行變異?

我對Redux世界非常陌生,發現很難在不改變它的情況下更新狀態。

+3

爲此,[Redux文檔](http://redux.js.org/docs/recipes/reducers/ImmutableUpdatePatterns.html#updating-an-item-in-an-array)中有一個專用章節,真的很有用。 – CodingIntrigue

+0

但是,在狀態中存在問題 - 哪些屬性保證是唯一值?我懷疑'價值'會永遠是唯一的 –

+0

@AhabhabhAgarwal價值是獨一無二的。我正在使用React Select使用的結構,由於某種原因使用值作爲唯一的選擇選項 –

回答

-1

我假設有東西在當前state一大堆,你想改變,你的陣列,第一個對象的selected價值true中,然後合併與當前狀態和更新狀態。

比方說你的「狀態對象」被稱爲foo,在你減速的功能,你會首先做一些像foo[0].selected = true;,然後你可以使用傳播運營商,像更新狀態:

return { 
    ...state, 
    foo 
}; 

希望這是有道理的,或者我對你的要求有點不滿意?

+0

在更新之前,我還需要將狀態字段全部重置爲「已選中」: '假'而不改變它。 –

相關問題