diff --git a/src/components/floor-plan/CanvasFrame.jsx b/src/components/floor-plan/CanvasFrame.jsx index bd4c6dbb..c195a39a 100644 --- a/src/components/floor-plan/CanvasFrame.jsx +++ b/src/components/floor-plan/CanvasFrame.jsx @@ -128,9 +128,9 @@ export default function CanvasFrame() { if (currentCanvasPlan.planNo) { /* 약간의 지연을 줘서 roofMaterials가 로드될 시간을 확보 */ setTimeout(() => { - // 메뉴 이동 시 canvasSetting이 덮어쓰이는 것을 방지 - // 이미 canvasSetting에 roofSizeSet이 있으면 API 호출 건너뛰기 - if (!canvasSetting?.roofSizeSet) { + // 플랜이 변경되었거나 아직 roofSizeSet이 없는 경우에만 fetch + const isPlanChanged = canvasSetting?.planNo !== undefined && Number(canvasSetting.planNo) !== Number(currentCanvasPlan.planNo) + if (!canvasSetting?.roofSizeSet || isPlanChanged) { fetchBasicSettings(Number(currentCanvasPlan.planNo), null, currentCanvasPlan.objectNo) } }, 100) diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index 1a54e537..f80b2902 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -457,7 +457,9 @@ export function useCanvasSetting(executeEffect = true) { if (openPoint !== 'basicSettingSave') { // canvasSetting은 현재 값을 유지하고 basicSetting만 업데이트 // 새로고침 시 canvasSetting이 바뀌는 문제 방지 - if (!canvasSetting?.roofSizeSet) { + // 단, 플랜이 변경된 경우에는 항상 업데이트 + const isPlanChanged = canvasSetting?.planNo !== undefined && Number(canvasSetting.planNo) !== Number(roofsRow[0].planNo) + if (!canvasSetting?.roofSizeSet || isPlanChanged) { setCanvasSetting({ ...basicSetting, roofMaterials: addRoofs[0],