我有下面的代码很好用
module.exports = injectIntl(redux.connect(mapStateToProps, mapDispatchToProps)(props => {
document.title = props.intl.formatMessage({ id: "app-name" });
return (<App {...props} />);
}));
当我将mergeProps添加到redux.connect时,道具中不再存在'intl'并且尝试设置document.title时出现错误
破损的代码:
module.exports = injectIntl(redux.connect(mapStateToProps, mapDispatchToProps, mergeProps)(props => {
document.title = props.intl.formatMessage({ id: "app-name" });
return (<App {...props} />);
}));
我的mergeProps函数:
function mergeProps(stateProps, dispatchProps) {
const mergeProps = {
error() {
alert("throw error");
},
};
return Object.assign({}, stateProps, dispatchProps, mergeProps);
}
在redux.connect函数中用null替换mergeProps时,没有错误,并且代码运行正常。
有人知道为什么合并道具似乎破坏了react-intl注入吗?
答案 0 :(得分:0)
通过将ownProps传递到合并道具中解决了这个问题。这正是ownProps旨在解决的问题,我并不陌生。
解决方案如下:
function mergeProps(stateProps, dispatchProps, ownProps) {
const mergeProps = {
error() {
alert("throw error");
},
};
return Object.assign({}, stateProps, dispatchProps, ownProps, mergeProps);
}