2016-09-25 92 views
2

例如讓我說我有一個有2個部分的應用程序。一個是顯示信息的主要區域,另一個是彈出式模式,可讓您從選擇中進行選擇。我可以在2個Redux狀態/縮減器之間共享「模型」嗎?

[] [] [] [] [] 
[] [] [] [] [] 

-------------- 
| [] [] [] [] | 
| [] [] [] [] | 
| [] [] [] [] | 
| [] [] [] [] | 
| [] [] [] [] | 
--------------- 

頂部在那裏,如果你選擇一個盒子模式(底部)彈出,讓你選擇,將它放在主屏幕中的項目的主屏幕。

2個區域共享相同的數據,這是可供選擇的「英雄」列表。

因此,像「Main」和「Modal」這樣的2個「狀態」有可能與他們使用它或某物的「英雄」具有相同的「數據庫」?

const Main = { 
    ... 
    heroes: heroes 
} 

const Modal = { 
    ... 
    heroes: heroes 
} 

,他們都使用相同的 「英雄」 模式?

或者我該如何設計這個解決方案?

回答

0

我認爲英雄名單應該只存在於一個reducer(Main)中。也許選擇的英雄存在於Model減速器中。您可以從1個組件中的多個reducer注入狀態。

export default connect(
(state) => ({ 
    heroesList: state.main.heroesList, 
    selected: state.model.selectedHero 
}), 
(dispatch) => ({ 

}) 
)(Model) 
+0

噢好吧...我想我會嘗試注入我的組件兩個狀態! – albert

1

我根本不會分裂狀態。我建議你有一個英雄集合,並選擇一個isSelected屬性。組件道具應該很容易從這種狀態進行計算。所以如果你有一個選定的英雄你顯示模態。保持同步狀態並不是redux的意圖,相反,您的每個視圖都可以從給定狀態計算所需的道具。另請注意,mapStateToProps接收作爲參數整個應用程序狀態不是它的一部分。希望這可以幫助你。

相關問題