3D 面板参考图菜单的边界 refs 数组稳定下来
- src/components/image-editor/model3d-generation/Model3dGenerationModal.tsx:boundaryRefs 用 useMemo 缓存,避免每次渲染都新建数组导致浮层 dismiss effect 反复解绑/重挂 document 监听
This commit is contained in:
@@ -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),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user