React-intl injectintl ​​не работает с mergeprops

У меня есть следующий код, который отлично работает

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);
}

При замене mergeProps на null в функции redux.connect ошибок нет, и код работает нормально.

Любая идея, почему слияние реквизита, похоже, нарушает инъекцию react-intl?

0
0
356
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решил эту проблему, передав ownProps в свойства слияния. Это именно то, что ownProps стремится решить, и я не был знаком.

Решение выглядит так:

function mergeProps(stateProps, dispatchProps, ownProps) {
    const mergeProps = {
        error() {
            alert("throw error");
        },
    };
    return Object.assign({}, stateProps, dispatchProps, ownProps, mergeProps);
}

Другие вопросы по теме