From 8526063cea20146da2fda81325ce6ce270ff53d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Fri, 31 Jul 2026 19:46:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BD=93=E9=80=89=E6=8B=A9=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E6=BF=80=E6=B4=BB=E6=97=B6=E5=85=B3=E9=97=AD=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E6=96=87=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 `useEffect`,在 `isAssetSelectionMode` 为 true 时关闭菜单。 - 更新测试以覆盖新行为。 --- .../ImageCanvasAssetRowView.test.tsx | 25 +++++++++++++++++-- .../image-editor/ImageCanvasAssetRowView.tsx | 6 +++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/components/image-editor/ImageCanvasAssetRowView.test.tsx b/src/components/image-editor/ImageCanvasAssetRowView.test.tsx index fe69f5845..95557c41e 100644 --- a/src/components/image-editor/ImageCanvasAssetRowView.test.tsx +++ b/src/components/image-editor/ImageCanvasAssetRowView.test.tsx @@ -126,8 +126,10 @@ function renderAssetRow({ onDownloadAsset, }; - render(); - return props; + return { + props, + ...render(), + }; } describe('ImageCanvasAssetRowView', () => { @@ -185,6 +187,25 @@ describe('ImageCanvasAssetRowView', () => { expect(screen.queryByRole('menu')).toBeNull(); }); + it('closes the right click menu when selection mode becomes active', () => { + const { props, rerender } = renderAssetRow(); + + fireEvent.contextMenu( + screen.getByRole('button', { name: '添加账号素材A' }), + { + clientX: 120, + clientY: 80, + }, + ); + expect(screen.getByRole('menu')).toBeTruthy(); + + rerender( + , + ); + + expect(screen.queryByRole('menu')).toBeNull(); + }); + it('selects the asset instead of adding it in selection mode', () => { const addAssetLayer = vi.fn(); const toggleAssetSelected = vi.fn(); diff --git a/src/components/image-editor/ImageCanvasAssetRowView.tsx b/src/components/image-editor/ImageCanvasAssetRowView.tsx index 47ea4cb3b..5f401a839 100644 --- a/src/components/image-editor/ImageCanvasAssetRowView.tsx +++ b/src/components/image-editor/ImageCanvasAssetRowView.tsx @@ -106,6 +106,12 @@ export function ImageCanvasAssetRowView({ setMenuPosition(null); }, []); + useEffect(() => { + if (isAssetSelectionMode) { + closeMenu(); + } + }, [closeMenu, isAssetSelectionMode]); + const selectAssetFromEvent = useCallback( (event: ReactMouseEvent) => { const pointerKind =