组件仅在用作导出组件的根时才需要类型注释

时间:2019-10-30 13:25:52

标签: reactjs flowtype

如果要在导出的组件内使用组件,Flow需要我对组件进行批注,但这仅在未注释的组件作为导出组件的根呈现时才会发生。

// @flow
import React from 'react';

const ContainerA = props => <div {...props} />;

// This one throws "Missing type annotation for `props`."
const ContainerB = props => <div {...props} />;

type Props = { children: React$Node };


// No type error
export const Ok = (props: Props) => <><ContainerA>{props.children}</ContainerA></>;

// Type error (see ContainerB comment)
export const Ko = (props: Props) => <ContainerB>{props.children}</ContainerB>;

Flow-Try repro

如果我用其他内容(片段,div等)包装未注释的组件,那么Flow不需要我对其进行注释。

我知道Flow希望我们对导出的函数,组件等进行批注...但是我没有导出该组件,而是在要导出的组件中使用它。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

流需要知道参数和导出函数的返回类型。

Try

似乎,当您使用诸如React片段或LOG_CHANNEL流之类的内置方法时,可以推断出返回类型而无需显式注释。