DEV/WebProgramming

[React.js] React-Table getGroupedRowModel() ์˜ค๋ฅ˜

9thxg 2024. 9. 18. 17:40

const React-Table getGroupedRowModel() ์˜ค๋ฅ˜ = ( Param ) => {

๐Ÿ’ป return Result;

// useReactTable Hook ์„ ์–ธ
const table = useReactTable({
    ...
    getGroupedRowModel: getGroupedRowModel(),

    // getGroupedRowModel๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ setPagination์„ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ˜์†”์ฐฝ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ
    // ๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด setPagination์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์ง
    onPaginationChange: () => undefined,
    ...
});

 

์ถœ์ฒ˜: https://github.com/TanStack/table/issues/5026#issuecomment-1704318269

 

Can't perform a React state update on a component that hasn't mounted yet ยท Issue #5026 ยท TanStack/table

Describe the bug Error received when navigating to a table using getGroupedRowModel() such as: const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), getGroupedRowModel: g...

github.com

 

๐Ÿ“ console.log( history )

React Table getGroupedRowModel() ์‚ฌ์šฉ์‹œ ์˜ค๋ฅ˜

 ์ตœ๊ทผ ํ˜ผ์ž ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ…Œ์ด๋ธ” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ–ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” React๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ๋ถ€ํ„ฐ ๊พธ์ค€ํžˆ ์จ์™”๊ธฐ ๋•Œ๋ฌธ์— ํ›„๋ณด์—์„œ ์ œ์™ธํ–ˆ๋‹ค. ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋ฉด์„œ Headless ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋“ค์–ด ์ด๋ฒˆ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์จ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

 ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ Headless ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์กด์žฌํ–ˆ๊ณ  ๊ทธ์ค‘์—์„œ React-Query๋กœ ์ต์ˆ™ํ•œ TanStack์˜ React-Table์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. Headless ๊ธฐ๋Šฅ์„ ์ฒ˜์Œ ์จ๋ณด๋‹ค ๋ณด๋‹ˆ ๋งŽ์ด ํ—ค๋งค๊ธด ํ–ˆ์ง€๋งŒ ๊ณต์‹ ๋ฌธ์„œ์˜ ํž˜์„ ๋นŒ๋ ค ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๊นŒ์ง€ ๊ตฌํ˜„ํ–ˆ๋‹ค.

 

 ํ…Œ์ด๋ธ”์—์„œ Type์„ ๊ธฐ์ค€์œผ๋กœ Grouping์„ ํ•˜์—ฌ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์–ด getGroupedRowModel()๋ฅผ ํ†ตํ•ด์„œ ๊ทธ๋ฃน ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ ์ฝ˜์†”์ฐฝ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋‹จ์ˆœํžˆ React-Table์˜ ํ•จ์ˆ˜๋ฅผ ๋ฐ›์•„ ์ œ๊ณตํ•œ ๊ฒƒ ๋ฐ–์— ์—†์–ด์„œ ๋‹นํ™ฉ์Šค๋Ÿฌ์šด ์˜ค๋ฅ˜์˜€๋‹ค.

 

 ์ž‘์„ฑํ•œ ์ฝ”๋“œ ์ค‘์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๊ณ  ๊ตฌ๊ธ€์— ์—ด์‹ฌํžˆ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ ๋‚˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๊ฒช์€ ๊ฐœ๋ฐœ์ž๊ฐ€ Issue๋ฅผ ์˜ฌ๋ ธ๊ณ  ํ•ด๋‹น Issue ๊ฒŒ์‹œ๊ธ€ ๋‹ต๋ณ€์— ํ•ด๊ฒฐ๋ฐฉ์•ˆ์ด ์žˆ์—ˆ๋‹ค.

 

 getGroupedRowModel ํ•จ์ˆ˜๊ฐ€ setPagination์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. Paging ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€๋ฐ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์— ์˜์•„ํ•˜์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€ setPagination์„ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— onPaginationChange ์ด๋ฒคํŠธ ํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค.

/ /  Improvements

ํ•ด๋‹น Issue ๊ฒŒ์‹œ๊ธ€์„ ๋ณด์•˜์„ ๋•Œ getGroupedRowModel ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ getFacetedUniqueValues์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ•จ์ˆ˜์—์„œ๋„ ๋ฐœ์ƒํ•œ๋‹ค.

 

๋นŒ๋“œํ•˜์—ฌ  ํ…Œ์ŠคํŠธํ–ˆ์„ ๋•Œ ํ•ด๋‹น ์˜ค๋ฅ˜๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. dev ๋ชจ๋“œ์ผ ๋•Œ React Strict Mode์— ์˜ํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋กœ ๋ณด์ธ๋‹ค.

}