250x250
반응형
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
- nodejs
- React
- 블록체인
- chatGPT
- 티스토리챌린지
- metamask
- miniconda
- node
- 오블완
- polygon
- Setting
- 공연티켓
- nginx
- Python
- exceljs
- PM2
- 라라벨
- NextJS
- threejs
- jquery
- Remix
- 회고
- CSS
- Ai
- Laravel
- nft
- pagination
- 배포
- netfunnel
- Kaikas
Archives
- Today
- Total
박주니 개발 정리
react에서 datatable 사용 방법 본문
728x90
반응형
1. npm install datatables.net-dt/css/jquery.dataTables.css datatables.net 를 합니다.
2. 업로드한 코드를 복사해서 이용합니다.
전체 코드
import React, { useEffect, useRef, useState } from "react";
import $ from "jquery";
import "datatables.net-dt/css/jquery.dataTables.css";
import "datatables.net";
import axios from "axios";
const MyDataTable = () => {
const tableRef = useRef(null);
const dataTableRef = useRef(null);
const [data, setData] = useState([]);
useEffect(() => {
const fetchData = async () => {
try {
const url = //서버 url;
const response = await axios.get(url, {
headers: {
// headers 서버 url 구성에 맞게 셋팅
},
});
// 데이터 셋팅 - setData에다가 값을 넣으면 됩니다.
setData(response.data);
} catch (error) {
console.error("Error fetching data:", error);
}
};
fetchData();
}, []);
// datatable 초기화 중복 경고 메시지를 방지
useEffect(() => {
if (dataTableRef.current === null) {
$(tableRef.current).DataTable({
paging: true,
pageLength: 10,
});
dataTableRef.current = true;
}
}, []);
useEffect(() => {
// pageLength: 페이지에 보여줄 row 갯수 설정
// columns: 데이터 key값을 넣으면 됩니다.
if (dataTableRef.current) {
$(tableRef.current).DataTable().destroy();
$(tableRef.current).DataTable({
data,
columns: [
{ data: "id" },
{ data: "consumerNm" },
{ data: "addr1" },
{ data: "consumerId" },
{ data: "meterNo" },
],
paging: true,
pageLength: 10,
destroy: true,
});
}
}, [data]);
return (
<div>
<table ref={tableRef}>
<thead>
<tr>
<th>id</th>
<th>consumerNm</th>
<th>addr1</th>
<th>consumerId</th>
<th>meterNo</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
);
};
export default MyDataTable;
설명
- return 안에 있는 tr 부분은 datatable에 key값에 해당되는 이름이라고 보시면 됩니다. 가져오는 데이터에 맞게 수정하시면 됩니다.
datatable 파트
useEffect(() => {
// pageLength: 페이지에 보여줄 row 갯수 설정
// columns: 데이터 key값을 넣으면 됩니다.
if (dataTableRef.current) {
$(tableRef.current).DataTable().destroy();
$(tableRef.current).DataTable({
data,
columns: [
{ data: "id" },
{ data: "consumerNm" },
{ data: "addr1" },
{ data: "consumerId" },
{ data: "meterNo" },
],
paging: true,
pageLength: 10,
destroy: true,
});
}
}, [data]);
- 현재 데이터는 setData를 통해서 넣었기 때문에 $(tableRef.current).DataTable({data, ..})에 넣으면 현재 요청하고 있는데이터를 datatable에 셋팅되게 됩니다.
- columns는 data에 key값에 이름을 적으시면 됩니다. 예를 들어서 [{id:"junhee"...}] 값을 가지고 오고 싶다면 {data:"id"}로 하시면 됩니다.
- pageLength는 row 갯수입니다. 설정에 따라서 한페이지에 보여주는 갯수가 달라집니다.
728x90
반응형
Comments