避免渲染阶段写入画布尺寸引用

在 ResizeObserver 尺寸更新回调中同步 canvasSizeRef
This commit is contained in:
2026-09-12 13:20:30 +08:00
parent ef04a19d5a
commit 379611d552
@@ -56,7 +56,6 @@ export function PreviewWorkspace({
);
const [canvasSize, setCanvasSize] = useState({ width: 900, height: 640 });
const canvasSizeRef = useRef(canvasSize);
canvasSizeRef.current = canvasSize;
const [spaceHeld, setSpaceHeld] = useState(false);
const [renderMode, setRenderMode] =
useState<UiEditorRenderMode>('editor-overlay');
@@ -202,10 +201,12 @@ export function PreviewWorkspace({
const element = viewportElementRef.current;
if (!element) return;
const updateSize = () => {
setCanvasSize({
const nextSize = {
width: element.clientWidth || 900,
height: element.clientHeight || 640,
});
};
canvasSizeRef.current = nextSize;
setCanvasSize(nextSize);
};
updateSize();
const observer = new ResizeObserver(updateSize);