2016-05-01 31 views
3

我有一個使用React,Redux和Immutable的全新項目。我創建我的狀態是一個嚴重嵌套的不可變映射。在我將它的部件傳遞給兒童組件的道具時,我應該在什麼時候給JJ打電話?React + Redux + Immutable - 不可變的對象應該有多深?

我認爲保持它始終是一個不可變類(特別是在新項目中)是有意義的,我非常喜歡getIn的功能。

不利的是,目前還不清楚展示組件內部的對象是不可變類還是普通JS對象。

+0

子組件也可以使用不可變接口。 'this.props.obj.get('foo')'而不是'this.props.obj.foo'。 –

回答

6

我建議保持它作爲不可變的一路下來。

如果您在將它作爲道具傳遞給子組件之前曾經在一個不可變狀態中調用過toJS,那麼您將失去該子組件的好處,該子組件可以對該道具進行簡單的引用檢查它的shouldComponentUpdate。有關更多信息,請參閱advanced performance section of the React docs

你有沒有想過打電話給JS的理由?最終,無論如何,你只需要爲你的UI訪問原始值,所以用get/getIn訪問它們是很容易的。作爲獎勵,這些不可變類型帶有一些方便的方法。

至於你提到的缺點,如果你使用react-immutable-proptypes它可以很容易地看到/執行每個組件的期望。如果你決定一直下到不可改變的地方,那麼無論如何也沒什麼可記住的。

+0

啊...是的...這些proptypes。優點!感謝你的回答! –

相關問題