【发布时间】:2021-05-04 17:42:38
【问题描述】:
在编写 TypeScript (tsx) 时,我通常使用 React.FC<Props>(或 React.FunctionComponent<Props>)键入我的 React 组件,其中 Props 是我自己的 prop 类型的接口。然后,打字系统会将children? 添加到我的组件所采用的道具列表中。
但这使得children 属性是可选的。
所以我们有React.VFC 用于没有子组件的组件,React.FC 用于具有可选子组件的组件。但是对于具有强制子级的组件,我可以使用什么?
我可以像这样手动完成,但我希望有一种更清洁的方法。
interface ParentFunctionComponent<P = {}> {
(props: PropsWithMandatoryChildren<P>, context?: any): ReactElement<any, any> | null;
propTypes?: WeakValidationMap<P>;
contextTypes?: ValidationMap<any>;
defaultProps?: Partial<P>;
displayName?: string;
}
type PropsWithMandatoryChildren<P> = P & { children: ReactNode };
【问题讨论】:
-
我认为您的意思是
React.VFC用于定义一个没有子组件的组件(而不是React.VFS)。我猜这是一个错字,因为没有VFS类型。我会编辑,但编辑队列已满。
标签: reactjs typescript