javascript - 如何从另一个 React 组件复制 Flow 类型的属性?

标签 javascript reactjs flowtype

我正在创建一个组件来包装另一个名为 Button 的组件. Button在不导出 Button 类型的库中定义的属性。

要正确键入我的组件,最好复制 Button 的类型的属性,向该类型添加一些属性(使用 typeof$Diff 或类似的)并将其用作我的组件类型 StyledButton .

类似于:

type AddedPropsT = {
  isStyled: boolean,
}

function StyledButton(props: $GenericParam(typeof Button) & AddedPropsType) {
  return (<Button ...props className={isStyled ? "StyleClass" : ""} />)
}

当然是输入 util $GenericParam在 Flow 中不存在。 Button 的类型是 React.ComponentType<Props> (问题是我如何从那里得到 Props 类型)并且在幕后它是纯函数无状态组件。

最佳答案

您可以使用 React.ElementConfig<typeof Component> 获取 Button Prop 类型的实用程序类型:

type AddedProps = {
  isStyled: boolean,
}

function StyledButton(props: React.ElementConfig<typeof Button> & AddedProps) {
  return (<Button {...props} className={props.isStyled ? "StyleClass" : ""} />)
}

关于javascript - 如何从另一个 React 组件复制 Flow 类型的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340343/

相关文章:

javascript - 欧芹js : Form validation for password field(minlength) not working as expected

javascript - 如何在重复点击时对同一对象进行键和值

javascript - Flow : "?() => void" 这个问号是什么意思

javascript - FlowJS - 无法识别可选字段何时有值

javascript - 在转译流程/ typescript 后保留类型检查

javascript - Dust.js @sep 示例不起作用

javascript - 迭代 javascript 对象以查看它是否具有特定值

reactjs - 如何在 JavaScript 中使用 Phoenix Controller 变量?

html - Gatsby - 更改首屏初始 HTML

javascript - 重定向后未存储 useState 值