reactjs - TypeScript React Js,类型'void'不可分配给类型'((事件:MouseEvent) => 无效) | 不明确的'
问题描述
我有这个功能和这个类型:
类型 ClickHandler = (tag: ITag) => void;
类型 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
解决方案
clickHandler
是一个柯里化函数(一个返回函数的函数)。考虑将其包含在您的类型中:
type ClickHandler = (tag: ITag) => (e: React.MouseEvent) => void;
注意:e
( event
) 参数的需要取决于您是否要在函数中使用它。
编辑:你的功能看起来像:
const clickHandler: ClickHandler = (tag) => (e) => {
e.preventDefault();
showHideDropItem(tag);
};
推荐阅读
- dynamic - 使用两个不同的 SSL 端口配置 IIS 的两个 dydns 网站并为两者配置端口转发
- c++ - C++ typedef 具有不定大小的元组
- wpf - 如何在 WPF 中的 DataTemplate 中查找 TextBox 的值?
- java - 使用 csv 进行哈希图和数组计算的正确方法。数据文件
- java - 用于自定义对象的 Android 房间类型转换器
- css - 如何在其旁边的 span 元素底部设置 span 元素并使用 css 省略并做出反应?
- django - 过滤值范围内的对象,如 id - Django
- windows - 在安装期间增加 Windows 事件日志大小
- python - 多剪贴板自动化无聊的东西
- azure-devops - 如何在 azure devops 中指定 dockerfile 路径