TypeScript React Js,类型'void'不能分配给类型'((event:MouseEvent <HTMLDivElement,MouseEvent>)=> void)|未定义”

时间:2020-05-01 19:59:44

标签: reactjs typescript

我有这个功能和这种类型:

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

1 个答案:

答案 0 :(得分:1)

clickHandler curried 函数(返回函数的函数)。考虑将其包括在您的类型中:

type ClickHandler = (tag: ITag) => (e: React.MouseEvent) => void;

注意:需要使用eevent)参数取决于您是否要在函数中使用它。

编辑:您的功能如下:

const clickHandler: ClickHandler = (tag) => (e) => {
   e.preventDefault();
   showHideDropItem(tag);
};