2017-03-17 46 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商店的实际状态。

因此,当你想修改道具时,你首先需要做一个副本。 如果你做一个浅拷贝,请注意更深的嵌套属性仍然指向它们在商店中的同行,所以要小心不要改变它们!