我正在开发一个按钮组件,它有variant
属性来决定它的颜色。
interface Props extends React.HTMLProps<HTMLButtonElement> {
variant: 'yellow' | 'green';
}
function Button({ variant, ...props }: Props) {
console.log(variant);
return (
<button
type="button"
{...props}
/>
);
}
我的type
下出现打字错误,内容如下:
(JSX属性)按钮HTMLA属性。类型?:"按钮"|"提交"|"复位"|未定义类型"string"不能分配给类型"button"|"提交"|"复位"|未定义'. ts(2322)索引. d. ts(1872,9):所需类型来自此处在类型"DetailedHTMLProps,HTMLButtonElement〉"上声明的属性"type"
所以我不确定我是否正确地延伸到按钮 prop ?也许还有另一种方法?
2条答案
按热度按时间tjrkku2a1#
应该使用
ButtonHTMLAttributes
而不是HTMLProps
,如下所示:qv7cva1a2#
2023年更新
如果您想创建按钮而不需要任何额外内容,可以扩展
React.ComponentPropsWithoutRef<"button">
,对于试图创建可重用组件的人,需要将底层元素扩展为forwardRef
,然后可以使用ComponentPropsWithRef
:为什么不使用
React.HTMLAttributes<HTMLButtonElement>
呢?这是当您使用以下命令时发生的情况:
旧答案
Codesandbox Live Preview
你可能要找的是
React.HTMLAttributes<HTMLButtonElement>
为了更精确,我们可以使用
React.ButtonHTMLAttributes<HTMLButtonElement>