7
我喜歡Redux中還原器構成的概念,但遇到了像像一樣將一個還原器分開的場景,但兒童減速器會依賴於從其他人的狀態切片進行更改。從屬狀態切片的Redux reducer /狀態設計
對於實施例
以我的狀態,我需要跟蹤下面的:
- 的可能行列(即
[ 2, 3, 4, 5, 6 ]
) - 當前所選等級A範圍(上述值之一)。
- 取決於選定的排名,一系列可能的訓練水平。的關係是,範圍從
[ 1 .. (selectedRank - 1) ]
- 甲進入當前選定的訓練水平在上述範圍內
最初,我有一個較大的減速機,其包封的所有這些方面:
function rankAndTraining(state = {
selectedRank : 4,
availableRanks : [ 2, 3, 4, 5, 6 ],
availableTrainingLevels : [ 1, 2, 3 ],
selectedTrainingLevel : 2,
}, action) {
.
.
.
case SELECT_RANK:
let newRank = action.rank;
if(!availableRanks.contains(newRank)) {
// If new rank is not an allowed value, do nothing.
return state;
}
// Update selectedRank with newRank...
// Update availableTrainingLevels array based on newRank...
// [ 1 ... (selectedRank - 1) ]
// Update selectedTrainingLevel if it is now out of range
// of availableTrainingLevel (i.e. set to highest value of new range)
return state;
.
.
.
}
我想分開這個reducer,因爲我認爲的排名爲和的訓練水平可以保留在單獨的reducer中。
不過,也有全州段,將仍需如果減速器被分流至處理相關性,比如:
- 如果新等級是無效的(當然這不是在。 availableRanks),那麼訓練級別比特不應該被更新。
如果我的訓練水平位分裂成另一個減速,那麼他們就沒有辦法知道這個「排名檢查」的結果,因爲所有他們會在他們的國家切片「看」是培訓等級件。
在這種情況下,鑑於它們之間的依賴關係,上述reducer是否是我可以獲取的狀態的「最小片段」?或者有沒有更好的方法來分割它,我可能沒有看到?