首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型‘(事件: React.MouseEvent) => void’不可分配到‘类型'(e?:MouseEvent<Element,MouseEvent> MouseEvent>未定义) => void’

类型‘(事件: React.MouseEvent) => void’不可分配到‘类型'(e?:MouseEvent<Element,MouseEvent> MouseEvent>未定义) => void’
EN

Stack Overflow用户
提问于 2022-09-07 13:29:59
回答 1查看 175关注 0票数 2

我有:

代码语言:javascript
复制
<StyledPill
        size="small"
        label="See All Destinations"
        onClick={handleClick}
        data-index={0}
        featured={selectedSearchType === 0}
        leftIcon={<AllDestinationsIcon />}
      />

其中StyledPill有类型:

代码语言:javascript
复制
export interface IPillProps {
  size: 'small' | 'medium';
  className?: string;
  featured?: boolean;
  label: string | ReactElement;
  disabled?: boolean;
  counter?: boolean;
  onClick?: (e?: MouseEvent) => void;
  leftIcon?: ReactElement<IconProps>;
  onClickLeftIcon?: (e?: MouseEvent) => void;
  rightIcon?: ReactElement<IconProps>;
  onClickRightIcon?: (e?: MouseEvent) => void;
  image?: ReactElement;
}

handleClick是:

代码语言:javascript
复制
  const handleClick = useCallback((event: React.MouseEvent) => {
    console.log('shamoon1', {event}, {selectedSearchType});
    preventClickPropagation(event, false, (e) => setSelectedSearchType(Number((e.target as HTMLElement).dataset.index)))
  },
    []
  );

但是这给了我一个onClick上的类型错误

代码语言:javascript
复制
Type '(event: React.MouseEvent) => void' is not assignable to type '(e?: MouseEvent<Element, MouseEvent> | undefined) => void'.
  Types of parameters 'event' and 'e' are incompatible.
    Type 'MouseEvent<Element, MouseEvent> | undefined' is not assignable to type 'MouseEvent<Element, MouseEvent>'.
      Type 'undefined' is not assignable to type 'MouseEvent<Element, MouseEvent>'.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 13:40:20

从错误来看,您的匿名函数应该有不同的签名:

您的匿名fn签名(以useCallback格式) (event: React.MouseEvent) => void

TypeScript所期待的:(e?: MouseEvent<Element, MouseEvent> | undefined) => void

我想,如果您将类型更新为MouseEvent<Element, MouseEvent> | undefined for event,那么这将意味着您必须更改实现以匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73636407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档