我正在为一个为我们提供HOC的库编写库定义。 HOC的实施如下:
const withValidation = TargetComponent => class extends React.Component {
onSubmit: () => { ... }
getFormData: () => { ... }
getErrors: () => { ... }
setField: diff => { ... }
resetState: () => { ... }
render () { return <TargetComponent ... /> }
}
我想编写一个库定义,指定从HOC返回的组件具有上面列出的实例方法。由于该组件的工作方式,它可以通过ref访问,这是我希望这些组件出现的地方。
我已经尝试为返回的组件编写一个libdef - 这是相关的部分:
declare class WithValidation<FormConfig> extends React$Component {
onSubmit: () => boolean;
getFormData: () => {
[key: string]: string,
};
setField: (diff: {}) => void;
getErrors: () => { [key: string]: string | null };
resetState: () => void;
}
这给了我一些错误,表明我的包装组件不是React组件。显然我在指定类的方式上做错了 - 但是我无法弄明白我应该写什么。
任何帮助将非常感谢!
Flow在0.89.0中实施了React.AbstractComponent
以帮助编写HOC。看看documentation for writing HOCs。