現在組件只能知道全球state
有所改變,但無法確定其狀態實際上發生變化。這是我的情景:如何應對redux中特定狀態的變化?
Component Root --- very deep --- Component Leaf
Component Leaf
是在組件層次結構非常深,它會觸發一個動作,改變全局狀態和Component Root
要換響應這一行動的一些內部狀態。有沒有辦法做到這一點?
現在組件只能知道全球state
有所改變,但無法確定其狀態實際上發生變化。這是我的情景:如何應對redux中特定狀態的變化?
Component Root --- very deep --- Component Leaf
Component Leaf
是在組件層次結構非常深,它會觸發一個動作,改變全局狀態和Component Root
要換響應這一行動的一些內部狀態。有沒有辦法做到這一點?
從概念上講,你會發現這是不去想它的正確方法:
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的工作是將渲染僅限制在已更改的組件上。只要確保避免變異中的狀態變異。
丹·阿布拉莫夫,REDX的創造者,recommends connecting更深的組件與REDX @connect
只要通過道具變得單調乏味。
如果您按照保留組件的建議將smart and dumb(我喜歡稱它們爲容器和組件)分開,智能組件將收集數據並將啞元組件顯示出來,那麼無論多深。