2015-11-23 22 views
1

現在組件只能知道全球state有所改變,但無法確定其狀態實際上發生變化。這是我的情景:如何應對redux中特定狀態的變化?

Component Root --- very deep --- Component Leaf

Component Leaf是在組件層次結構非常深,它會觸發一個動作,改變全局狀態和Component Root要換響應這一行動的一些內部狀態。有沒有辦法做到這一點?

回答

1

從概念上講,你會發現這是不去想它的正確方法:

Component Root要響應改變一些內部狀態,以這個動作

當使用終極版和應對,從商店派生的任何東西都應該是道具沒有說明。

所以,首先,轉換上述狀態變爲道具。

其次,使用connect函數從react-redux設置這些道具。

你可能見過像這樣的終極版文檔:

// Take the store state and return the props for your root component 
function mapStateToProps(state) { 
    return state; 
} 

export default connect(mapStateToProps)(Root); 

如何定義你的mapStateToProps功能是由你。您可以選擇使用全部或部分狀態。

最後,通過相關道具到整個組織的Leaf節點。

不要太擔心該國的一部分發生了變化。 React和Redux的工作是將渲染僅限制在已更改的組件上。只要確保避免變異中的狀態變異。

0

丹·阿布拉莫夫,REDX的創造者,recommends connecting更深的組件與REDX @connect只要通過道具變得單調乏味。

如果您按照保留組件的建議將smart and dumb(我喜歡稱它們爲容器和組件)分開,智能組件將收集數據並將啞元組件顯示出來,那麼無論多深。