From 6244f8eeb97718822494c3ed0c8e1c86b61e1008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Fri, 7 Aug 2026 13:32:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E6=B3=A8=E7=B4=A0=E6=9D=90=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E4=B8=8E=E5=AF=BC=E5=87=BA=E5=BE=85=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 明确记录框选热路径的性能问题与优化边界 注明序列部分成功是 master 既有行为并等待契约讨论 --- src/components/image-editor/useImageCanvasAssetExportWorkflow.ts | 1 + src/components/image-editor/useImageCanvasAssetSelection.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/image-editor/useImageCanvasAssetExportWorkflow.ts b/src/components/image-editor/useImageCanvasAssetExportWorkflow.ts index b123e19fb..5433ed802 100644 --- a/src/components/image-editor/useImageCanvasAssetExportWorkflow.ts +++ b/src/components/image-editor/useImageCanvasAssetExportWorkflow.ts @@ -553,6 +553,7 @@ export function useImageCanvasAssetExportWorkflow({ }), ), ); + // TODO(master 既有行为待讨论): 当前至少一帧成功即导出;需先明确部分失败的顶层状态和原时间点保留契约,再决定整体失败或部分导出。 const successfulFrames = preparedFrames .filter((result) => result.status === 'success') .map((result) => result.frame); diff --git a/src/components/image-editor/useImageCanvasAssetSelection.ts b/src/components/image-editor/useImageCanvasAssetSelection.ts index 240ab0937..9e35d8ffe 100644 --- a/src/components/image-editor/useImageCanvasAssetSelection.ts +++ b/src/components/image-editor/useImageCanvasAssetSelection.ts @@ -354,6 +354,7 @@ export function useImageCanvasAssetSelection({ top: number; bottom: number; }) => { + // TODO(性能问题): pointermove 会读取全部素材布局并更新 React state;后续需在保留滚动框选、末帧提交和取消回滚语义的前提下,用内容坐标缓存与 rAF 合帧优化。 const marqueeSelection = selectUploadedAssetsInRect({ assets, assetTargets: readAssetHitTargets(assetListRef.current),