From 2037ad8722e9b3d6579607957577142599cb63f3 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Sat, 18 Jan 2025 21:54:35 +0000 Subject: [PATCH] fix: use `useRef()` for oldTool instead of `useState()` --- src/components/canvas/Canvas.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/canvas/Canvas.tsx b/src/components/canvas/Canvas.tsx index 2f43efd..e740335 100644 --- a/src/components/canvas/Canvas.tsx +++ b/src/components/canvas/Canvas.tsx @@ -42,8 +42,8 @@ function Canvas() { const [dragging, setDragging] = useState(false); const [holdingAlt, setHoldingAlt] = useState(false); - const [oldTool, setOldTool] = useState("hand"); const selectionBoxBoundsRef = useRef(); + const oldToolRef = useRef(); const visibleArea = useMemo(() => { const blockSize = 16 * scale; @@ -302,7 +302,7 @@ function Canvas() { switch (e.key) { case " ": // Space setDragging(true); - setOldTool(tool); + oldToolRef.current = tool; setTool("hand"); setCssCursor("grabbing"); break; @@ -344,9 +344,10 @@ function Canvas() { const onKeyUp = (e: KeyboardEvent) => { switch (e.key) { case " ": // Space + if (!oldToolRef.current) return; setDragging(false); setCssCursor("grab"); - setTool(oldTool); + setTool(oldToolRef.current); break; case "Alt": setHoldingAlt(false);