diff --git a/CLAUDE.md b/CLAUDE.md index 7a348f72..eaa95b5b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1121,56 +1121,59 @@ createShape(board, points, shapeType); - 事件处理器使用 `useCallback` 包装 - Hook 顺序:状态 hooks → 副作用 hooks → 事件处理器 → 渲染逻辑 -### 新增 UI 组件需同步更新全局事件排除列表 +#### Hover 延迟操作需要正确的计时器清理 -**场景**: 添加新的浮层/覆盖层 UI 组件(如工具栏、导航、面板等)时,需要将其排除在全局事件处理之外 +**场景**: 实现 hover 延迟展开/显示等交互效果时(如工具栏 Popover 延迟展开) ❌ **错误示例**: ```typescript -// drawnix.tsx 中的双击事件处理 -const handleDoubleClick = (event: MouseEvent) => { - const target = event.target as HTMLElement; - - const isInsideOverlay = target.closest('.chat-drawer') || - target.closest('.minimap') || - target.closest('.ai-input-bar'); - // ❌ 忘记添加新组件 .view-navigation - - if (isInsideOverlay) return; - - // 双击空白区域触发 quick-creation-toolbar - setQuickToolbarVisible(true); -}; +// 错误:没有清理计时器,可能导致内存泄漏和意外行为 +const [open, setOpen] = useState(false); -// 结果:双击 view-navigation 会意外触发 quick-creation-toolbar +