目前有個情境: 嵌套很深的子元件(展示型元件),需要觸發的action(比如說路由跳轉),想避免層層傳遞相關的action creater, 或dispatcher方法。所以想這麼做:
將redux的store實例設為全域物件即global.store = store這樣,然後在任何地方任何時間都可以store.dispatch().
等於不再使用react-redux的mapDispatcherToProps方法了。
這麼幹會有問題或坑麼?
這樣明顯不符合redux 設計初衷了,任何元件都可以透過全域的store 去修改狀態了。建議還是在action觸發放在root組件, 至於深層組件,可以透過事件通知到root組件,再有組件觸發action. 其次組件嵌套層級一般是不建議超過3級以上的,可以去考慮下是否真的需要使用父子組件的形式,是否可以由兄弟組件取代部分。
這個做法邏輯上是跑的通的,主要坑在於服務端渲染。
如果做服務端渲染的話,服務端需要自己的store來做渲染
這樣明顯不符合redux 設計初衷了,任何元件都可以透過全域的store 去修改狀態了。建議還是在action觸發放在root組件, 至於深層組件,可以透過事件通知到root組件,再有組件觸發action. 其次組件嵌套層級一般是不建議超過3級以上的,可以去考慮下是否真的需要使用父子組件的形式,是否可以由兄弟組件取代部分。
這個做法邏輯上是跑的通的,主要坑在於服務端渲染。
如果做服務端渲染的話,服務端需要自己的store來做渲染