2016-09-21 54 views
0

我目前正在使用React-Application,在我的Redux-Reducers中使用Immutable.js。如果還原器沒有改變它,那麼還原器將返回之前的狀態作爲參考(按照建議)。 如果我現在將之前的狀態與下一個狀態(state===nextState)進行比較,它將返回true,因爲參考沒有改變,對吧?是否可以在React-Redux應用程序中使用Immutable.js來比較shouldComponentUpdate中的道具?

現在,如果reducer改變了狀態,它會返回一個新的Immutable.js映射。

現在做相同的比較它會返回false,因爲它是一個新的Map。

以某種方式檢測shouldComponentUpdate內的支持更改是否合理?

如果是這樣,有沒有辦法修改react-redux connect函數來使用我自定義的shouldComponentUpdate方法?因爲顯然無法將Immutable.js對象作爲道具傳遞給組件。

+0

歡迎來到SO。我們更喜歡可以回答的問題,而不僅僅是討論。請查看幫助中心,走[這趟(http://stackoverflow.com/tour),看看有什麼要問及如何。 –

回答

1

在mapStateToProps中,如果您沒有將此不可變的迭代器轉換爲等效的JS對象並按原樣傳遞Immutable對象。你可以做到。

例如:

而不是

const mapStateToProps = (state) => ({ ...(state.toJS()) }); 

辦法從國家訪問組件的任何數據:this.props.data

你也可以寫爲:

const mapStateToProps = (state) => ({ state }); 

路訪問組件中的任何數據:this.props.state.get('data')

相關問題