Похоже, injectIntl
не поднимает / не копирует статические элементы обернутого компонента, и это очень вероятная причина проблемы.
Реагирует на документацию: Статические методы должны быть скопированы поверх :
Однако при применении HOC к компоненту исходный компонент оборачивается компонентом-контейнером.Это означает, что новый компонент не имеет статических методов исходного компонента.
Вы можете проверить уже сообщенную проблему в injectIntl
трекере.
Существует обходной путь , в то время как исправление официально применяется к проекту.
Вы можете создать оболочку injectIntl
, которая будет корректно копировать статику:
// utils/injectIntl.js
import { injectIntl as baseInjectIntl } from 'react-intl';
import hoistNonReactStatic from 'hoist-non-react-statics';
/**
* A fixed injectIntl that hoists statics.
*/
export function injectIntl(WrappedComponent: Function): Function {
const WrapperComponent = baseInjectIntl(WrappedComponent);
hoistNonReactStatic(WrapperComponent, WrappedComponent);
return WrapperComponent;
}
А позже используйте его в своем приложении следующим образом:
import injectIntl from 'utils/injectIntl'
// ...
injectIntl(withRouter(connect(mapStateToProps, mapDispatchToProps)(MyComponent)));
Кредиты .