nextjs-framework
  • nextjs-sj-prime-base
  • Getting Started
    • Quickstart
    • Project Structure
    • Code Convention
  • 신규 프로젝트 생성 가이드
  • 라이브러리 개발 및 배포
  • # 고고컴퍼니 어드민 개발 서버 배포
  • Port 설정 방법
  • 에러 해결 방법
  • StoryBook 설명
  • COMPONENTS/UI
    • Tooltip
    • CompactIconButton
    • IconButton
    • FormAsset
    • InputField
    • Dropzone
    • Select
    • DataTable
    • TableHead
    • TableHeadDropdownMenu
    • TableCell
    • TableCellSelect
    • Tag
    • Tabs
    • Chip
    • Command
    • FilterSelect
    • FilterMultiSelect
    • FilterDate
    • DatePicker
    • Toast
  • Timer
  • Components/layout
    • page-header
    • info-card
    • search-filter
    • table-header
    • form
  • Custom Hook
    • use-form
  • use-form-file
  • use-timer
  • Util
    • validation
    • middleware.ts
  • Components/미사용
    • input-box
    • single-select
    • multi-select
    • range-date-picker
    • radio-button-group
    • checkbox-group
    • list-table
    • pagination
    • toggle
Powered by GitBook
On this page
  • Props
  • Usage
  1. COMPONENTS/UI

DataTable

PreviousSelectNextTableHead

Last updated 1 month ago

라이브러리 사용

Props

Prop
Type
Default
Description

columns

ColumnDef<TData, TValue>[]

-

컬럼 정의 데이터

data

TData[]

-

테이블 데이터

groupKey

string[]

-

셀 병합 할 컬럼의 accessorKey 값

Usage

  • 페이지 별 테이블 컬럼 별도 생성

  • 테이블 내 데이터 상태 관리를 위해 custom hook 형태로 파일 구성

### /src/components/table/sample-table-column.tsx

export function useSampleTableColumns({
  formData,
  handleFormChange
}) {
  const columns: ColumnDef<T>[] = [
    {
      id: 'check',
      header: ({ table }) => <TableHead variant={'checkbox'} table={table} />,
      cell: ({ row }) => <TableCell type={'checkbox'} row={row} />,
      meta: {
        rowSpan: 2, // rowSpan 설정이 필요한 경우
      }
    },
    {
      accessorKey: 'title',
      header: () => <TableHead variant={'text'} title={'타이틀'} />,
      cell: ({ row }) => <TableCell type={'text'} text={row.original['title']} />,
      meta: {
        rowSpan: 2,
      }
    },
    {
      id: 'mergedCell',
      header: () => <TableHead variant={'text'} title={'병합 셀'} />,
      columns: [
        {
          accessorKey: 'merged01',
          header: () => <TableHead variant={'text'} title={'병합 셀 01'} />,
          cell: ({ row }) => <TableCell type={'text'} text={row.original['merged01']} />,
        },
        {
          accessorKey: 'merged02',
          header: () => <TableHead variant={'text'} title={'병합 셀 02'} />,
          cell: ({ row }) => <TableCell type={'text'} text={row.original['merged02']} />,
        },
      ],
    },
  ]
  
  return columns
}

<DataTable
  columns={columns}
  data={data}
  groupKey={['title', 'merged02']}
/>

Tanstack Table