我有这个功能和这种类型:
type ClickHandler =(tag:ITag)=> void;
type ShowHideDropItem =(tag:ITag)=> void;
我的tsx:
const [menuItems, setMenuItems] = useState<ITag[]>(SideBarTags);
const clickHandler: ClickHandler = (tag) => () => {
showHideDropItem(tag);
};
const showHideDropItem: ShowHideDropItem = (tag) => {
setMenuItems((items) =>
items.map((item) => ({
...item,
Active:
item.Name === tag.Name ? (tag.Active === true ? false : true) : false,
}))
);
};
但是我在onClick上收到此错误:
类型'void'不能分配给类型'((event: MouseEvent)=> void)|未定义”。 TS2322
答案 0 :(得分:1)
clickHandler
是 curried 函数(返回函数的函数)。考虑将其包括在您的类型中:
type ClickHandler = (tag: ITag) => (e: React.MouseEvent) => void;
注意:需要使用e
(event
)参数取决于您是否要在函数中使用它。
编辑:您的功能如下:
const clickHandler: ClickHandler = (tag) => (e) => {
e.preventDefault();
showHideDropItem(tag);
};