我做了一个简单的组件:
const CloseButton = ({ onClick }: { onClick: MouseEventHandler }) => {
const classes = useStyles();
return <CloseIcon className={classes.closeButtonStyles} onClick={onClick} />;
};
export default CloseButton;
我可以这样打电话:
<CloseButton onClick={handleClose} />
这很好。
但是当我添加一个className
属性时,例如:
<CloseButton className={classes.closeButton} onClick={handleClose} />
我得到了错误:
输入'{className:string; onClick:()=>无效; }'不可分配 键入'IntrinsicAttributes&{onClick:(event:MouseEvent)=> void; }'。属性“ className”不存在于 输入'IntrinsicAttributes&{onClick:(event:MouseEvent)=> void; }'
为什么会出现?为什么className
属性与onClick
属性混合在一起?
答案 0 :(得分:2)
我不确定CloseIcon
组件是如何定义的,但是我猜猜道具类型有些不匹配。
请确保CloseIcon
的类型别名/接口包括className
道具(在onClick
方法道具的顶部):
interface CloseIconProps {
className: string;
onClick: () => void;
}
(您也可以选择将className
定义为可选字段)
答案 1 :(得分:-2)
Typescript不知道该函数是React组件。
您可以尝试将React类型添加到组件中,例如而不是const CloseButton =
,您应该使用const CloseButton: React.FC<{yourPropsHere: string}> =