React - 由父级覆盖redux prop

时间:2017-10-02 10:25:21

标签: javascript reactjs redux

说我有Container通过以下方式连接到redux:

const mapStateToProps = ({ MyReducer }) => ({
    myProp: MyReducer.myProp
});

是否可以通过父级强制myProp的值(覆盖redux)?

我试过了:

<Container myProp={"notReduxValue"}/>

但是mapStateToProps会覆盖提供的值。

注意:我无法更改容器,我的问题是它是否可以通过父母进行。

(当然这意味着糟糕的状态设计,但遗憾的是它已经到了)

由于

1 个答案:

答案 0 :(得分:7)

mapStateToProps接受two arguments。所以我想你可以通过以下方式覆盖它:

const mapStateToProps = ({ MyReducer }, { myProp }) => ({
  myProp: myProp || MyReducer.myProp,
})

如果您想覆盖较高级别的myProp,可以使用connect&#39; mergeProps来执行此操作(也可以使用@OrB)。

const mapStateToProps = ({ MyReducer }, { myProp }) => ({
  myProp: MyReducer.myProp,
})

const mapDispatchToProps = () => ({ ... })

const mergeProps = (stateProps, dispatchProps, ownProps) => ({
  ... // make your changes here
})

const ConnectedContainer = connect(
  mapStateToProps,
  mapDispatchToProps,
  mergeProps
)(Container)