[as instl] 상태 업데이트 로직 개선: 기존 키의 변화에 따라 상태를 업데이트하도록 수정 Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.

This commit is contained in:
2026-05-21 18:30:53 +09:00
parent d3434060ba
commit 8ab63870d4
@@ -162,11 +162,34 @@ function CnfmRegistPage() {
useEffect(() => {
setCheckResults((prev) => {
const next: Record<string, CheckResultVal> = {};
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]);