由於反應網絡應用程序變得複雜,一些組件具有數字道具,其可讀性較差,難以期望該組件做什麼,並且繁瑣地添加大量的道具類型檢查並將道具從最頂層的組件傳遞到底層。這主要是通過傳遞flux/redux行爲和商店從上到下傳遞的結果。如何減少反應道具通過的次數
有沒有減少通過的道具數量的好方法?
有兩個解決方案我認爲,這是不完美的:
與傳播運營商{...}道具道具通行證。這確實減少了編寫一些道具和道具類型檢查,但是命名可能有衝突,所以動作/商店的名稱應該是唯一的。另一個缺點是要特別注意道具通過或不要避免副作用。
用一個容器直接將組件的行爲/存儲包裝到組件中,以自組織形式包裝組件。例如,可以使用
react-redux
的connect()
。這比解決方案#1更清潔和簡單,但如果組件由於Redux錯誤而包含容器,則很難編寫組件測試。錯誤的 一個例子是
Invariant Violation: Could not find "store" in either the context or props of "Connect(Header)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(Header)".