稳定预览手势清理回调

通过 ref 读取最新预览回调\n避免回调身份变化时重复取消进行中的手势
This commit is contained in:
2026-09-03 11:51:34 +08:00
parent 093a2ace76
commit f79ccccf44
@@ -100,15 +100,18 @@ export function useNodeTransformInteraction({
) => void;
}) {
const activeGestureRef = useRef<ActiveGesture | null>(null);
// Keep cleanup stable while still invoking the latest preview callback.
const onPreviewTransformRef = useRef(onPreviewTransform);
onPreviewTransformRef.current = onPreviewTransform;
const cancelGesture = useCallback(() => {
const gesture = activeGestureRef.current;
if (gesture) {
releasePointer(gesture.target, gesture.pointerId);
onPreviewTransform?.(gesture.nodeId, null);
onPreviewTransformRef.current?.(gesture.nodeId, null);
}
activeGestureRef.current = null;
}, [onPreviewTransform]);
}, []);
useEffect(() => cancelGesture, [cancelGesture]);