fetchBasicSettings에서 correntObjectNo를 Recoil state에서 직접 읽고 있어서, 새 오브젝트가 생성될 때 아직 이전 값이 남아있는 stale closure 문제

This commit is contained in:
ysCha 2026-03-12 12:54:18 +09:00
parent 2cc2814709
commit 63578276aa
3 changed files with 9 additions and 6 deletions

View File

@ -131,7 +131,7 @@ export default function CanvasFrame() {
// canvasSetting
// canvasSetting roofSizeSet API
if (!canvasSetting?.roofSizeSet) {
fetchBasicSettings(Number(currentCanvasPlan.planNo), null)
fetchBasicSettings(Number(currentCanvasPlan.planNo), null, currentCanvasPlan.objectNo)
}
}, 100)
}

View File

@ -316,7 +316,10 @@ export function useCanvasSetting(executeEffect = true) {
/**
* 기본설정(PlacementShapeSetting) 조회 초기화
*/
const fetchBasicSettings = async (planNo, openPoint) => {
const fetchBasicSettings = async (planNo, openPoint, objectNo) => {
// objectNo가 전달되면 사용, 아니면 Recoil state의 correntObjectNo 사용
const targetObjectNo = objectNo || correntObjectNo
// 지붕재 데이터가 없으면 먼저 로드
let materials = roofMaterials
if (!materials || materials.length === 0) {
@ -326,9 +329,9 @@ export function useCanvasSetting(executeEffect = true) {
}
try {
const apiUrl = `/api/canvas-management/canvas-basic-settings/by-object/${correntObjectNo}/${planNo}`
const apiUrl = `/api/canvas-management/canvas-basic-settings/by-object/${targetObjectNo}/${planNo}`
logger.log('🔍 fetchBasicSettings API 호출:', apiUrl)
logger.log('🔍 correntObjectNo:', correntObjectNo, 'planNo:', planNo)
logger.log('🔍 targetObjectNo:', targetObjectNo, 'planNo:', planNo)
await get({
url: apiUrl,

View File

@ -254,7 +254,7 @@ export function usePlan(params = {}) {
setPlans([newPlan])
/* 플랜 추가 시 배치면초기설정 정보 조회 */
fetchBasicSettings(newPlan.planNo, null)
fetchBasicSettings(newPlan.planNo, null, objectNo)
} else {
if (isCopy) {
const currentSelectedMenu = selectedMenu
@ -579,7 +579,7 @@ export function usePlan(params = {}) {
setPlans((plans) => plans.map((plan) => ({ ...plan, isCurrent: plan.id === lastPlan.id })))
/* 플랜 삭제 시 그 전 플랫의 배치면초기설정 정보 조회 */
fetchBasicSettings(lastPlan.planNo, null)
fetchBasicSettings(lastPlan.planNo, null, lastPlan.objectNo)
}
}