2017-05-31 60 views
4

我正在與其他一些開發人員一起開展React + Redux項目,我們無法就在何處傳遞狀態和操作的最佳做​​法達成一致。將Redux狀態轉換爲組件時的最佳實踐

我的方法是有一個'容器'或'提供者'組件,它是父組件,所有需要的狀態和動作映射到狀態並傳遞到子組件中,從而創建單一的事實源。然而,不利的一面是,您必須記住將操作和值傳遞給每個子組件,這可能會非常棘手。

另一種開發人員的方法是在堆棧中任何位置需要它的每個組件上使用mapStateToProps。因此,如果一個兒童組件需要三個或四個關卡需要一定的狀態,他會在該組件上使用mapStateToProps。他還會直接使用關鍵字import來導入動作創作者,而不是將其稱爲道具。我不喜歡這種方法,因爲您可能會多次注入狀態,並且無法在一個地方快速切換狀態或操作。

我可以看到兩種方法都有其優點和回退,所以我只是想知道是否有一個確定的最佳實踐來決定何時何地將狀態/動作注入到React組件堆棧中。

+0

我傾向於傑里米的回答,但是關於這個問題並沒有硬性和快速的「規則」,更多的是關於意見以及你想如何構造事物。 –

回答

5

我曾在一個比較大的終極版的代碼庫和方法,我們選擇了和我喜歡用mapStateToProps容器分量派遣行動,並委託渲染啞組件你的第二個方法。

您希望能夠在許多地方重用它們而不必傳遞狀態。您的頂級REDX狀態仍然是事實的根源,但mapStateToProps將允許您僅訪問此容器中需要的狀態部分。

終極版文檔出奇的好做,檢查出來,它建議實施mapStateToPropshttp://redux.js.org/docs/basics/UsageWithReact.html

+0

我完全同意mapStateToProps上的容器組件,它派遣行動並委託渲染爲啞組件+1。 – GibboK

+0

因此,如果使用集裝箱組件說...堆棧的一半是合法的?因此,一個容器組件,它調用一個愚蠢的組件,說...調用另一個容器組件? –

+0

是的!甚至一路下降或一路下降。這個想法是,那麼你可以在任何地方使用你的容器組件,它應該與其環境無關,這就是Redux的美麗。 –