warppedComponent自带的静态方法不会被高阶组件继承。可以采用
Enhance.staticMethod=WrappedComponent.staticMethod的方法继承。
function enhance(WrappedComponent) {
class Enhance extends React.Component {/*...*/}
// 必须准确知道应该拷贝哪些方法 :(
Enhance.staticMethod = WrappedComponent.staticMethod;
return Enhance;
}
也可以导入库:hoist-non-react-statics(hoist-non-react-statics库介绍 (github.com))。自动拷贝所有非 React 静态方法
import hoistNonReactStatic from 'hoist-non-react-statics';
function enhance(WrappedComponent) {
class Enhance extends React.Component {
render(){
return <WrappedComponent />
}
}
hoistNonReactStatic(Enhance, WrappedComponent);
return Enhance;
}