콘텐츠로 이동
Data TableAPI Reference

Viewport Hook

comins-table@0.2.2React

전체 데이터를 배열로 만들지 않고 현재 스크롤 주변 블록을 조회합니다. useCominsViewport가 소비자 React 상태를 관리하며 Table은 필요한 범위를 요청합니다.

export declare function useCominsViewport<T>(options: CominsViewportOptions<T>): {
data: CominsViewportData<T>;
tableProps: {
data: CominsViewportData<T>;
onChangeData: (next: CominsViewportData<T>) => void;
onViewportRequest: (request: CominsViewportRequest) => Promise<void>;
viewportDatasource: CominsViewportDatasource;
virtualized: true;
};
};

반환값 data는 현재 snapshot입니다. tableProps를 CominsTable에 펼치고 columns와 안정적인 getRowId를 지정합니다. tableProps에는 data, onChangeData, onViewportRequest, viewportDatasource, virtualized: true가 포함됩니다. 해당 콜백을 덮어쓰면 직접 상태 연동이 필요합니다.

queryKey·rowCount·blockSize·cacheSize 변경은 hook snapshot을 새로 만듭니다. 조회 순서나 필터가 바뀌면 queryKey도 바꾸십시오. getRows 함수 참조만 바꾸는 것은 데이터 초기화가 아닙니다. abort된 요청·이전 초기 상태의 응답은 반영하지 않고, 조회 예외는 오류 요청 상태로 변환합니다.

export type CominsViewportOptions<T> = {
rowCount: number;
queryKey: CominsViewportRevision;
getRows: (request: CominsViewportRequest) => readonly T[] | Promise<readonly T[]>;
blockSize?: number;
cacheSize?: number;
maxConcurrentRequests?: number;
heightCacheSize?: number;
onEdit?: (changes: readonly CominsViewportPatch<T>[]) => void;
};
속성 동작·기본값
rowCount 필수. 전체 건수인 0 이상의 안전한 정수. 알 수 없으면 먼저 count를 조회합니다.
queryKey 필수. 문자열/숫자 dataset revision. 검색·정렬·인덱스 순서가 달라지면 변경합니다.
getRows 필수. [startIndex, endIndex) 범위와 signal을 받습니다. 정확히 endIndex − startIndex개의 null/undefined 없는 행 배열을 반환합니다. 마지막 블록도 동일합니다.
blockSize 기본 100행. 양의 안전한 정수가 아니면 기본값을 사용합니다.
cacheSize 기본 12블록. 현재 범위와 활성 요청 블록 보존 때문에 실제 보관량이 한도를 넘을 수 있습니다.
maxConcurrentRequests 기본 2. Table의 동시 범위 요청 수. 양의 안전한 정수가 아니면 2입니다.
heightCacheSize 기본 64블록. 데이터 캐시와 별도로 행 높이 측정값을 보관합니다.
onEdit 선택. 절대 인덱스와 새 행의 patch 배열 알림. 동기 호출 후 로컬 snapshot에 반영합니다. 서버 저장은 앱 책임이며, 캐시 퇴출 후 재조회 시 미저장값을 다시 합쳐야 합니다.

고정/자동 행 높이, 컬럼 고정·크기 조절, 로딩된 행의 편집을 지원합니다. Tree·Row Grouping·Row Detail·행 이동·append 로딩·pagination과 결합하지 않습니다. 정렬·필터는 외부 조회 조건으로 처리합니다. 서버 push나 미수신 행 자동 다운로드는 제공하지 않습니다.