콘텐츠로 이동
Grid Layout사용 가이드

배치 저장과 복원

comins-grid-layout@0.3.0React

위젯을 이동하거나 크기를 조절하면 DashboardGrid가 좌표를 계산합니다. onLayoutCommit을 commands.applyLayoutSnapshot에 연결하여 React 상태를 동기화한 뒤 저장합니다. 이 연결이 없으면 화면에서 변경한 좌표와 저장 대상 상태가 달라질 수 있습니다.

  1. 배치 저장으로 현재 전체 상태를 메모리에 보관합니다.
  2. 너비 변경을 누르거나 위젯 제목을 드래그합니다.
  3. 저장 상태 복원으로 저장한 배치를 되돌립니다.

이 예제의 저장소는 React 메모리입니다. 새로고침 후에도 유지하려면 직렬화 가능한 데이터를 선택하고 애플리케이션 저장소에 기록해야 합니다.

메서드 입력 / 반환 용도
serializeLayout() DashboardLayoutSnapshot 반환 현재 컬럼 수와 위젯 좌표만 조회합니다.
serializeState() DashboardStateSnapshot<TData> 반환 위젯 데이터, 최대화·최소화 복원 좌표, 방문한 컬럼별 좌표까지 저장합니다.
applyLayoutSnapshot(snapshot) DashboardLayoutSnapshot → void Grid의 배치 commit을 상태에 반영합니다.
restoreLayout(snapshot) DashboardStateSnapshotInput<TData> → void 전체 상태를 교체하여 복원합니다.
resetLayout(snapshot?) 좌표 또는 상태 snapshot → void 인자가 없으면 초기 상태로, 인자가 있으면 해당 snapshot으로 교체합니다.
필드 타입 의미
columns DashboardColumnCount 현재 컬럼 수
widgets DashboardWidget<TData>[] 현재 위젯, 좌표, 데이터와 상태
previousLayouts Record<DashboardWidgetId, DashboardWidgetLayout> 최대화·최소화에서 복원할 좌표
layoutsByColumn DashboardLayoutsByColumn 방문한 컬럼별 레이아웃 캐시

DashboardLayoutSnapshot의 widgets는 전체 위젯이 아닌 DashboardWidgetLayout[]입니다. 두 snapshot을 서로 바꾸어 사용하지 않습니다.

restoreLayout 입력은 이전 버전과의 호환을 위해 previousLayouts, layoutsByColumn 생략을 허용합니다. 활성 컬럼 캐시와 최상위 상태가 다르면 최상위 widgets와 previousLayouts가 우선합니다. React 외부 reducer에서는 serializeDashboardState 순수 helper를 사용할 수 있습니다.

저장소 선택, schema migration, 서버 동기화는 소비자 애플리케이션의 책임입니다. 외부 JSON은 타입·ID·좌표·업무 데이터 검증을 마친 뒤 복원합니다. TypeScript 타입 표기는 런타임 JSON 검증을 대신하지 않습니다.

배치 저장, 레이아웃 저장, 상태 저장, 영속화, 복원, persistence, serializeState, restoreLayout.

배포 기준 영속화 가이드 · npm 0.3.0