fetchBasicSettings에서 correntObjectNo를 Recoil state에서 직접 읽고 있어서, 새 오브젝트가 생성될 때 아직 이전 값이 남아있는 stale closure 문제
This commit is contained in:
parent
2cc2814709
commit
63578276aa
@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user