转发道具的基本思路是我想要增强元素, 通过撰写它。 E.g。
class MyButton extends Component {
render() {
const { busy, children, ...props } = this.props
return <button { ...props }>
{ busy ? "busy" : children }
</button>
}
}
这里我可以为按钮元素添加一个额外的属性(忙), 但仍然将按钮元素的所有属性传递给 &#34;实&#34;按钮。 这节省了大量的写作,因为我不必每次都写 财产再次。此外,如果按钮界面更改了我的按钮包装器 会自动适应。
现在我想用流式注释做同样的事情。
class Button extends Component<props_t, state_t> {
render() { ... }
}
但是我应该如何定义props_t。 如果我写
type props_t = { busy: boolean }
这只会接受繁忙的财产。
我的想法是使用联合类型并执行以下操作:
import type { ElementProps } from "react"
const button = props => <button { ...props } />
type props_t = {
busy: boolean
} | ElementProps<(typeof button)>
实际上这种接缝起作用,但看起来更像是黑客,因为 首先必须推断出道具。
有人知道更好的方法,或者通常如何做到这一点?
编辑:
经过一些测试后,我得出的结论是上述解决方案不起作用。