Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- fe
- javascript
- useRecoilState()
- useResetREcoilState()
- React XLSX
- React 그리드
- ag-Grid 체크박스
- 리액트 엑셀다운로드
- React srcSet
- react 파일명 깨짐
- React
- useSetRecoilState()
- React ExcelDownload
- atom()
- react mac 파일명 깨짐
- Recoil 상태
- Next.js
- React Excel
- useRecoilValue()
- React ag-Grid
- useRecoilStateLoadable()
- selector()
- 리액트 엑셀다운
- React AgGrid
- React file-saver
- React FileSaver
- Typescript
- Cookie
- js mac에서 파일 첨부시 파일명이 깨짐
- js 파일명 꺠짐
Archives
- Today
- Total
나만의 개발 공간
React ag-Grid 사용하기 본문
자사 어드민 리팩토링하게 되면서 기존에 <table>형식을 버리고 오픈 소스를 검색한 후 사용하게 된 게 ag-Grid이다.
ag-Grid는 자바스크립트 기반의 오픈 소스 그리드이며 무료(커뮤니티)와 상용(엔터프라이즈)버전으로 구분되어 있는데,
상용버전은 서버사이드 랜더링, 엑셀 추출등등 지원을 많이 하지만 유료이므로 무료버전으로도 충분히 구현할 수 있기 때문에 사용하게 됐다.
React로 ag-Grid를 사용하는 방법 -> https://www.ag-grid.com/react-data-grid/getting-started/
라이브러리 설치가 완료됐다는 가정하에 아래와 같이 코드를 작성하겠다.
import { AgGridReact } from 'ag-grid-react';
import '@ag-grid-community/core/dist/styles/ag-grid.css';
import '@ag-grid-community/core/dist/styles/ag-theme-alpine.css';
....
const ReactAgGrid = () => {
const [selectedRows, setSelectedRows] = useState<any>([]); <-- 선택한 데이터가 들어가는...
const rowsData = []; <-- 데이터가 있다 가정하에 작성!!
// headerName <- 테이블 헤더에 보여줄 내용
// filed <- rowData 정보
// headerCheckboxSelection <- 생성일시 헤더에 체크박스 생성
// checkboxSelection <- rowData부분에도 체크박스 생성
// pinned <- pinned: 'left'로 작성하면 좌측으로
// width <- width값 조정
const [columnDefs] = useState([
{headerName: '생성일시', filed: 'createdAt', headerCheckboxSelection: true, checkboxSelection: true },
{headerName: '제목', filed: 'title'}
{headerName: '내용', filed: 'content'}
{headerName: '작성자', filed: 'writer'}
.....
]);
const rowData = rowsData && rowsData.map((v: any) => {
return {
createdAt: v.createdAt,
title: v.title,
content: v.content,
writer: v.writer
};
};
// onSelectionChanged는 선택한 정보를 가져오기 위해 사용했었던 건데 까먹을까봐 블로그에 작성!!
const onSelectionChanged = (event: any) => {
setSelectRowData(event.api.getSelectedRows());
}
return (
<div className="ag-theme-alpine" style={{height: "700px", width: '100%'}}>
<AgGridReact
rowData={rowData} // 테이블 데이터
columnDefs={columnDefs} // 헤더데이터
animateRows={true} // 행 애니메이션
suppressRowClickSelection={true} // true -> 클릭 시 행이 선택안됌
rowSelection={'multiple'} // 여러행 선택
enableCellTextSelection={true} // 그리드가 일반 테이블인 것처럼 드래그시 일반 텍스트 선택
onSelectionChanged={onSelectionChanged} // 선택한 체크박스 정보 가져오기
>
</AgGridReact>
</div>
);
};
export default ReactAgGrid;
아래는 실제 내가 자사 어드민 개발하면서 보여주고 있는 테이블이다. 데이터는 안보이게 했다.
체크박스는 헤더부분에 있는 체크박스를 선택하면 전체선택이 되고, 다시 클릭하면 전체해제가 된다.
rowData부분에 있는 체크박스는 해당 열을 선택하는거며 onSelectionChanged를 사용하면 전체선택한 것과 선택한 정보들을 확인할 수 있다.
아래는 선택한 체크박스를 선택했을 때 선택한 체크박스만큼 정보를 노출시켜준다. 체크가 되면 setSelectRowData에 객체로 선택한 데이터들이 담긴다.
'React' 카테고리의 다른 글
Recoil 래퍼런스 API 상태 정리 (0) | 2023.09.06 |
---|---|
React Mac에서 파일 첨부시 파일명이 ㅎㅏㄴㄱㅡㄹ처럼 나온다면 (0) | 2023.01.12 |
React 엑셀 다운로드 (0) | 2022.05.20 |
React img srcSet과 a태그 스크롤 (0) | 2022.05.20 |
React react-cookie (0) | 2022.03.25 |
Comments