diff --git a/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx b/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx index 97fc032e7..b3414a652 100644 --- a/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx +++ b/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx @@ -162,11 +162,34 @@ function CnfmRegistPage() { useEffect(() => { setCheckResults((prev) => { const next: Record = {}; + let changed = false; + cklstRows.forEach((row) => { const key = cklstKey(row); - next[key] = prev[key] ?? null; + if (Object.prototype.hasOwnProperty.call(prev, key)) { + next[key] = prev[key]; + } else { + next[key] = null; + changed = true; + } }); - return next; + + // 기존 key가 사라졌거나 값이 달라진 경우만 상태 업데이트 + if (!changed) { + const prevKeys = Object.keys(prev); + if (prevKeys.length !== Object.keys(next).length) { + changed = true; + } else { + for (const key of prevKeys) { + if (!(key in next) || prev[key] !== next[key]) { + changed = true; + break; + } + } + } + } + + return changed ? next : prev; }); }, [cklstRows]);