2016-04-21 29 views
5

https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.i63w9pvzw反應。如果演示組件包含容器組件,那麼它不好嗎?

表象成分:

  • 可以包含表象和容器組件**內,通常有一些DOM的標記和樣式自己的。
  • 對應用程序的其他部分沒有依賴關係,例如Flux操作或商店。

我想,如果表象成分中含有容器組件,他們將獲得依賴於流量或終極版(或其他容器組件所依賴的)。

這將使表示組件難以測試和重用。

+0

有問題嗎? – aet

+0

@aet我不知道包含容器組件的表示組件是否不好? –

+2

夠公平的。答案不是直截了當的。有人可能會爭辯說,構建應用程序會更好,因此您不需要嵌套容器組件。例如,對於redux,沒有什麼能阻止你將整個狀態對象作爲道具傳遞給每個組件(這是一種常見模式),從而消除了對這些容器進一步向下的需求。但是,也許你有一個非常好的理由這樣做,比如如果一個子組件需要狀態,並且該狀態恰好是一個大對象,並且如果它傳遞給每個人,性能可能會受到影響。 – aet

回答

2

這不壞,它是完美的。 react-redux的全部要點是讓您直接將容器組件直接連接到商店,而不必將每個組件的整個商店作爲道具傳遞。組件重用不是問題,因爲<Provider>組件將使任何連接的容器組件在其下的任何位置工作。

實際上並不難測試容器組件。您可以將連接的組件設爲默認導出,還可以將未連接的組件導出爲命名導出,您可以將其用於測試,並在這些測試中手動傳遞道具。請參閱'Writing Tests' part of the Redux docs的「連接組件」部分了解更多信息。

至於測試包含容器組件的表示組件,它不會是一個問題。淺色渲染在測試中仍然可以正常工作(除非您碰到this issue)。如果您需要在測試中安裝組件,您可以隨時將其包裝在具有專門用於該測試的商店的<Provider>組件中。

編輯:此答案是特定於Redux with react-redux。其他Flux實現可能會遇到一些困難,我不知道這一點。

相關問題