当前位置: 首页> 教育> 高考 > 宁波工程造价信息网_java工程师工资一般多少_购物链接_关键词快速排名软件价格

宁波工程造价信息网_java工程师工资一般多少_购物链接_关键词快速排名软件价格

时间:2025/7/18 10:03:59来源:https://blog.csdn.net/weixin_52268321/article/details/147598312 浏览次数:0次
宁波工程造价信息网_java工程师工资一般多少_购物链接_关键词快速排名软件价格

react用了shadui组件库

        <Popover><PopoverTrigger><div className="text-operation-item" onClick={props.callback}><img src={props.imgSrc} width={20} height={20} /></div></PopoverTrigger><PopoverContent className="text-operation-bar">{props?.childComponent}</PopoverContent></Popover>

原因

shadcn/ui 的 Popover 底层是基于 @radix-ui/react-popover,默认行为是:

PopoverContent 里的任何点击事件,如果冒泡到 document,就会触发 Popover 的自动关闭。

📌 为什么点 childComponent 会让 Popover 关闭?
因为 @radix-ui/react-popover 会监听 onPointerDownOutside / onInteractOutside 事件,判断如果点击不是在 PopoverTrigger 或 PopoverContent 里,就关闭 Popover。
如果你的 childComponent 内部点击事件没有 stopPropagation,或者它的 focusable 元素 blur 了,也会触发关闭

解决办法:

方法 1:
给 childComponent 里的元素加 onClick={(e) => e.stopPropagation()}

<input onClick={(e) => e.stopPropagation()} />

如果 childComponent 是个自定义组件,也要确保它内部点击事件 stop 了冒泡。

方法 2:
利用 Popover 的 onOpenChange 和 open 手动控制开关状态
如果希望 Popover 点里面的内容不消失,推荐受控写法:

const [open, setOpen] = useState(false);<Popover open={open} onOpenChange={setOpen}><PopoverTrigger>...</PopoverTrigger><PopoverContent><input onClick={(e) => e.stopPropagation()} /></PopoverContent>
</Popover>

这样你能完全控制 Popover 的开关逻辑。

关键字:宁波工程造价信息网_java工程师工资一般多少_购物链接_关键词快速排名软件价格

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: