避免渲染阶段写入画布尺寸引用
在 ResizeObserver 尺寸更新回调中同步 canvasSizeRef
This commit is contained in:
+4
-3
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user