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

Redux - Is the state that is returned by mapStateToProps a copy of the store state?

我有这个功能:

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

店铺是这样的:

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

当我在connected component中使用this.props.products时,是否还需要这样做:

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

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

对于正常用例(例如,您使用 react-redux 中的简单 connect() 函数,而不是更具自定义性的 connectAdvanced()),传递给组件的道具是准确的与您在 mapStateToProps.

中 return 相同

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

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