You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React TypeScript导航菜单打开函数类型错误求助

解决React+TypeScript导航菜单打开函数的类型错误

错误原因

这个错误是类型不兼容导致的:你的setAnchorEl状态更新函数只接受null类型的值(或者返回null的函数),但你传入的e.currentTarget是EventTarget & Element类型,TypeScript的类型检查机制不允许这种跨类型的赋值。

本质问题是你初始化anchorEl状态时没有显式指定类型,TypeScript自动推断其类型为null,对应的setAnchorEl参数类型就被限定为SetStateAction<null>,只能接收null。

解决方案

  1. 显式指定状态类型
    把anchorEl的类型声明为HTMLElement | null,这样状态既可以存储DOM元素,也可以是null:

    const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);
    
  2. 优化事件参数类型(可选)
    如果是键盘触发的菜单打开,建议给事件显式指定目标元素类型,让类型检查更严谨:

    const onMenuOpen = (e: React.KeyboardEvent<HTMLElement>): void => {
      setAnchorEl(e.currentTarget);
    };
    

这样修改后,e.currentTarget的类型会被推断为HTMLElement,和anchorEl的类型HTMLElement | null完全兼容,类型错误就会消失。

内容的提问来源于stack exchange,提问作者user11631308

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:09:53