Flow不会抱怨不兼容的ReactClass用法和JSX

时间:2017-08-03 19:53:07

标签: flowtype

我相信以下内容应该被流程抓住:

type MyProps = {
  foo: boolean,
};
const makeComponent = (C: ReactClass<MyProps>) => <C />;

从阅读the source开始,我相信我正确理解ReactClass

是什么给出的?这似乎也适用于React.createElement(C, {})

另一方面,以下休息:

import MyComponent from '...'; // this component has props MyProps
const makeComponent = () => <MyComponent />;
// and likewise with React.createElement

1 个答案:

答案 0 :(得分:2)

根据this评论,ReactClass充其量只是错误,不应该使用。您可以改用以下内容:

type MyProps = {
  foo: boolean,
};
const makeComponent = (C: Class<React.Component<void, MyProps, void>>) => <C />;

请注意React.Component的参数为defaultPropsPropsState。在上面的示例中,假设组件未定义defaultPropsState,因此void值。