我有这个功能和这个类型:
类型 ClickHandler = (标签: Itag) => void;
类型 ShowHideDropItem = (标签: 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,
}))
);
};
Run Code Online (Sandbox Code Playgroud)
但我在 onClick 上收到此错误:
类型“void”不可分配给类型“((event: MouseEvent) => void) |” 不明确的'。TS2322
clickHandler是柯里化函数(返回函数的函数)。考虑将其包含在您的类型中:
type ClickHandler = (tag: ITag) => (e: React.MouseEvent) => void;
Run Code Online (Sandbox Code Playgroud)
注意e: ( ) 参数的需要event取决于您是否想在函数中使用它。
编辑:你的函数看起来像:
const clickHandler: ClickHandler = (tag) => (e) => {
e.preventDefault();
showHideDropItem(tag);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15002 次 |
| 最近记录: |