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

Shadcn下拉菜单点击外部后按钮仍保持焦点的问题求助

Shadcn下拉菜单点击外部后按钮保持焦点的修复方案

针对点击下拉菜单外部后按钮仍处于焦点状态的问题,可通过以下几种方式解决:

  • 利用Radix Menu的onClose回调手动失焦
    给Menu组件添加onClose事件,在菜单关闭时主动让触发按钮失焦。示例代码如下:

    import { useRef } from 'react'
    import { Menu, MenuTrigger, MenuContent, MenuItem } from '@/components/ui/menu'
    import { Button } from '@/components/ui/button'
    
    export function DropdownMenu() {
      const triggerRef = useRef<HTMLButtonElement>(null)
    
      return (
        <Menu onClose={() => triggerRef.current?.blur()}>
          <MenuTrigger asChild>
            <Button ref={triggerRef}>打开菜单</Button>
          </MenuTrigger>
          <MenuContent>
            <MenuItem>选项1</MenuItem>
            <MenuItem>选项2</MenuItem>
          </MenuContent>
        </Menu>
      )
    }
    
  • 排查自定义焦点逻辑干扰
    检查项目中是否存在全局焦点管理代码(如路由切换后的自动聚焦、自定义键盘事件处理),这类代码可能会覆盖Radix组件的默认焦点行为,需调整相关逻辑避免冲突。

  • 更新组件版本
    确认@radix-ui/react-menu和Shadcn的UI组件包为最新版本,旧版本可能存在焦点管理的bug,更新后通常能解决此类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:59:55