Redux - mapStateToProps返回的状态是商店状态的副本吗?

时间:2017-03-17 13:01:54

标签: redux react-redux

我有这个功能:

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

并且商店是这样的:

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

当我在连接组件中使用this.props.products时,我是否还需要这样做:

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

制作副本,或者已经是副本。

1 个答案:

答案 0 :(得分:3)

对于正常使用情况(例如,您使用来自connect()的简单react-redux函数而不是更可自定义的connectAdvanced()),传递到您的组件的道具与你在mapStateToProps中返回的内容。

由于mapStateToProps的状态参数是对商店状态的直接引用,因此它们指的是Redux商店的实际状态。

因此,当您想要修改道具时,您首先需要复制它们。 如果你做一个浅拷贝,请注意更深层次的嵌套属性仍然引用它们在商店中的对应物,所以小心不要改变它们!