From 2327d6e97c0479a656ec30710f69c90743e8a845 Mon Sep 17 00:00:00 2001 From: leeheejin Date: Wed, 21 Jan 2026 17:14:07 +0900 Subject: [PATCH] =?UTF-8?q?=EC=83=81=ED=83=9C=EC=9C=A0=EC=A7=80=20?= =?UTF-8?q?=EC=88=98=EC=A0=952?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pivot-grid/PivotGridComponent.tsx | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/frontend/lib/registry/components/pivot-grid/PivotGridComponent.tsx b/frontend/lib/registry/components/pivot-grid/PivotGridComponent.tsx index 8db463c4..13cb1a68 100644 --- a/frontend/lib/registry/components/pivot-grid/PivotGridComponent.tsx +++ b/frontend/lib/registry/components/pivot-grid/PivotGridComponent.tsx @@ -447,8 +447,8 @@ export const PivotGridComponent: React.FC = ({ useEffect(() => { if (!isStateRestored) return; // 복원 완료 전에는 무시 - // persistState가 켜져있고 저장된 상태가 있으면 initialFields로 덮어쓰지 않음 - if (persistState && typeof window !== "undefined") { + // 저장된 상태가 있으면 initialFields로 덮어쓰지 않음 + if (typeof window !== "undefined") { const savedState = localStorage.getItem(stateStorageKey); if (savedState) return; // 이미 저장된 상태가 있으면 무시 } @@ -456,13 +456,32 @@ export const PivotGridComponent: React.FC = ({ if (initialFields.length > 0) { setFields(initialFields); } - }, [initialFields, isStateRestored, persistState, stateStorageKey]); + // persistState는 의존성에서 제외 - 체크박스 변경 시 현재 상태 유지 + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [initialFields, isStateRestored, stateStorageKey]); - // 상태 유지 설정 저장 + // 상태 유지 설정 저장 + 켜질 때 현재 상태 즉시 저장 useEffect(() => { if (typeof window === "undefined") return; localStorage.setItem(persistSettingKey, String(persistState)); - }, [persistState, persistSettingKey]); + + // 상태 유지를 켜면 현재 상태를 즉시 저장 + if (persistState && isStateRestored && fields.length > 0) { + const stateToSave = { + version: PIVOT_STATE_VERSION, + fields, + pivotState, + sortConfig, + columnWidths, + }; + localStorage.setItem(stateStorageKey, JSON.stringify(stateToSave)); + } + + // 상태 유지를 끄면 저장된 상태 삭제 + if (!persistState) { + localStorage.removeItem(stateStorageKey); + } + }, [persistState, persistSettingKey, isStateRestored, fields, pivotState, sortConfig, columnWidths, stateStorageKey]); // 상태 저장 (localStorage) const saveStateToStorage = useCallback(() => {