我正在创建一个包装另一个名为Button
的组件的组件。 Button
在不导出Button
属性类型的库中定义。
要正确键入我的组件,最好复制Button
属性的类型,为该类型添加一些属性(使用typeof
,$Diff
等)并将其用作组件StyledButton
的类型。
类似的东西:
type AddedPropsT = {
isStyled: boolean,
}
function StyledButton(props: $GenericParam(typeof Button) & AddedPropsType) {
return (<Button ...props className={isStyled ? "StyleClass" : ""} />)
}
当然,Flow中不存在util $GenericParam
类型。 Button
的类型是React.ComponentType<Props>
(问题是如何从那里得到Props
类型),而在幕后它是纯函数无状态组件。
答案 0 :(得分:2)
您可以使用React.ElementConfig<typeof Component>
实用程序类型来获取Button的道具类型:
type AddedProps = {
isStyled: boolean,
}
function StyledButton(props: React.ElementConfig<typeof Button> & AddedProps) {
return (<Button {...props} className={props.isStyled ? "StyleClass" : ""} />)
}