2017-03-17 74 views
0

我有這樣的功能:Redux - 由mapStateToProps返回的狀態是商店狀態的副本嗎?

const mapStateToProps = function(state){ 
    return { 
     products: state.products 
    } 
}; 

和實體店是這樣的:

var store = { 
    products: [1,2,3] 
}; 

當我在所連接的組件使用this.props.products,我還需要做到這一點:

var products = this.props.products.slice(); 

作出副本,或者已經是副本。

回答

2

在正常使用情況下(如,您使用來自react-redux簡單connect()功能,而不是更多的可定製connectAdvanced()),發送到您的組件的道具都是完全一樣的,你在mapStateToProps返回的內容。

由於mapStateToProps的狀態參數是對商店狀態的直接引用,因此它們指的是Redux商店的實際狀態。

因此,當你想修改道具時,你首先需要做一個副本。 如果你做一個淺拷貝,請注意更深的嵌套屬性仍然指向它們在商店中的同行,所以要小心不要改變它們!