3D 面板参考图菜单的边界 refs 数组稳定下来

- src/components/image-editor/model3d-generation/Model3dGenerationModal.tsx:boundaryRefs 用 useMemo 缓存,避免每次渲染都新建数组导致浮层 dismiss effect 反复解绑/重挂 document 监听
This commit is contained in:
2026-09-24 17:26:02 +08:00
parent 89b8211b94
commit cd5218535e
@@ -5,6 +5,7 @@ import type {
RefObject,
SetStateAction,
} from 'react';
import { useMemo } from 'react';
import { PlatformActionButton } from '../../common/PlatformActionButton';
import { PlatformStatusMessage } from '../../common/PlatformStatusMessage';
@@ -82,9 +83,14 @@ export function Model3dGenerationModal({
const submitDialog =
dialog.status === 'failed' ? refreshModel3dAttemptNonce(dialog) : dialog;
// 每次都新建数组会让上面的 dismiss effect 每次渲染都重挂监听;ref 对象本身是稳定的。
const referenceMenuBoundaryRefs = useMemo(
() => [generationReferenceButtonRef],
[generationReferenceButtonRef],
);
useImageCanvasFloatingOptionDismiss({
isOpen: isImageMode && isGenerationReferenceMenuOpen,
boundaryRefs: [generationReferenceButtonRef],
boundaryRefs: referenceMenuBoundaryRefs,
onDismiss: () => setIsGenerationReferenceMenuOpen?.(false),
});