【发布时间】:2018-01-13 01:07:16
【问题描述】:
我正在创建一些按钮组件,并且我有一些我需要的自定义道具,并希望通过流程检查它们。但由于它们是按钮,我还想要 HTML 按钮元素中的任何其他道具,但不想全部检查它们。
有什么方法可以做出反应,或者使用 npm 包让我输入检查我的新自定义道具并让组件接收任何其他道具?或者可能只限于 HTML 定义的?
【问题讨论】:
-
可以用$FlowFixMe忽略
我正在创建一些按钮组件,并且我有一些我需要的自定义道具,并希望通过流程检查它们。但由于它们是按钮,我还想要 HTML 按钮元素中的任何其他道具,但不想全部检查它们。
有什么方法可以做出反应,或者使用 npm 包让我输入检查我的新自定义道具并让组件接收任何其他道具?或者可能只限于 HTML 定义的?
【问题讨论】:
您应该能够将其余的道具向下传递,而无需为其添加类型注释。
例子:
import React, { type Node } from 'react'
type Props = {
primary?: boolean,
children: Node
}
function Button({ primary, children, ...props }: Props) {
return (
<button
className={primary ? 'is-primary' : ''}
{...props}
>
{children}
</button>
)
}
export default Button
用法:
function App() {
return (
<div>
<Button primary onClick={() => console.log('clicked!')}>
Click Me
</Button>
</div>
)
}
您也可以在flow.org/try 上查看。
【讨论】: