为HOC编写流libdef

时间:2018-07-19 07:14:55

标签: javascript reactjs flowtype static-typing flow-typed

我正在为提供我们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组件。显然,我在指定类的方式上做错了-但我不知道该写些什么。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

Flow在0.89.0中实现了React.AbstractComponent,以帮助编写HOC。签出documentation for writing HOCs