稳定预览手势清理回调
通过 ref 读取最新预览回调\n避免回调身份变化时重复取消进行中的手势
This commit is contained in:
+5
-2
@@ -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]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user