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
// canvasSetting roofSizeSet API // canvasSetting roofSizeSet API
if (!canvasSetting?.roofSizeSet) { if (!canvasSetting?.roofSizeSet) {
fetchBasicSettings(Number(currentCanvasPlan.planNo), null) fetchBasicSettings(Number(currentCanvasPlan.planNo), null, currentCanvasPlan.objectNo)
} }
}, 100) }, 100)
} }

View File

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

View File

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