说我有Container
通过以下方式连接到redux:
const mapStateToProps = ({ MyReducer }) => ({
myProp: MyReducer.myProp
});
是否可以通过父级强制myProp的值(覆盖redux)?
我试过了:
<Container myProp={"notReduxValue"}/>
但是mapStateToProps
会覆盖提供的值。
注意:我无法更改容器,我的问题是它是否可以通过父母进行。
(当然这意味着糟糕的状态设计,但遗憾的是它已经到了)
由于
答案 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)