๋ฌดํ•œ ์Šคํฌ๋กค๊ณผ ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ๋„์ž… ์ค‘์ธ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค!

 

ํ”„๋กœ์ ํŠธ์— ๋„์ž…๋  ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ฐœ๋ฐœ ์ค‘์ธ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋˜ ์ค‘ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์ˆ˜ํžˆ ๋งŽ์•„์งˆ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง„ ์•Š์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์— ๋ฌดํ•œ ์Šคํฌ๋กค์— ๋Œ€ํ•œ ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
์—ฌ๋Ÿฌ ์ตœ์ ํ™” ์ค‘ ํ•˜๋‚˜๋Š” ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์— ๋Œ€ํ•ด ํŒŒํŠธ๋ฅผ ๋‚˜๋ˆ  ๊ธฐ๋กํ•ด๋‘๋ ค ํ•ด์š”!

 

๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค ์ด๋ž€?

๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค(Virtual Scroll)์€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ๋ณด๊ณ  ์žˆ๋Š” ํ•ญ๋ชฉ๋งŒ ๋ Œ๋”๋งํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

ํŠนํžˆ, ๋ฆฌ์ŠคํŠธ๋‚˜ ๊ทธ๋ฆฌ๋“œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ƒํ™ฉ๊ณผ, ์‹ค์ œ ์ƒ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ์˜ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ƒ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋ณ„๋„์˜ ๊ธ€๋กœ ๋ถ„๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค!

 

๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ์–ด๋А ์ƒํ™ฉ์—์„œ ์จ์•ผ ํ• ๊นŒ?

๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•„์ˆ˜์ ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆ˜์ฒœ ์ˆ˜๋งŒ ๊ฐœ์˜ ํ•ญ๋ชฉ์ด ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ชจ๋“  ํ•ญ๋ชฉ์„ ํ•œ ๋ฒˆ์— ๋ Œ๋”๋งํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋Ÿด ๋•Œ, ํ˜„์žฌ ํ™”๋ฉด์— ๋ณด์ด๋Š” ํ•ญ๋ชฉ๋งŒ ๋ Œ๋”๋งํ•จ์œผ๋กœ์จ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋กค ์„ฑ๋Šฅ ๊ฐœ์„ 

์ผ๋ฐ˜์ ์ธ ์Šคํฌ๋กค ๋ฐฉ์‹์—์„œ๋Š” ๋ชจ๋“  ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ์ด DOM์— ์กด์žฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กคํ•  ๋•Œ ํ™”๋ฉด์— ๋ณด์ด๋Š” ํ•ญ๋ชฉ์€ ๋ฐ”๋€Œ์ง€๋งŒ, DOM์—์„œ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ๊ณ„์† ์œ ์ง€๋˜๋ฏ€๋กœ ์ง€์›Œ์ง€๊ฑฐ๋‚˜ ์ถ”๊ฐ€๋˜๋Š” ๊ณผ์ •์ด ์—†์Šต๋‹ˆ๋‹ค.

๋Œ€์‹ , ๋ธŒ๋ผ์šฐ์ €๋Š” ์Šคํฌ๋กค์— ๋”ฐ๋ผ ๋ณด์ด์ง€ ์•Š๋Š” ํ•ญ๋ชฉ๋“ค์„ ์—ฌ์ „ํžˆ ๋ฉ”๋ชจ๋ฆฌ์— ๋‘๊ณ  ์žˆ์–ด, ์ „์ฒด ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋ Œ๋”๋ง ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐ˜๋ฉด, ๊ฐ€์ƒ ์Šคํฌ๋กค์—์„œ๋Š” ์Šคํฌ๋กคํ•  ๋•Œ ํ˜„์žฌ ํ™”๋ฉด์— ๋ณด์ด๋Š” ํ•ญ๋ชฉ๋งŒ DOM์— ๋ Œ๋”๋งํ•˜๊ณ , ๋‚˜๋จธ์ง€ ํ•ญ๋ชฉ์€ DOM์—์„œ ์ง€์šฐ๊ฑฐ๋‚˜ ์ˆจ๊น๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ, ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€๋˜๋Š” ์š”์†Œ์˜ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์–ด ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กคํ•  ๋•Œ ํ•„์š”ํ•œ ๋งŒํผ์˜ ํ•ญ๋ชฉ๋งŒ ์ƒ์„ฑํ•˜๊ณ , ๋ณด์ด์ง€ ์•Š๋Š” ํ•ญ๋ชฉ์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•˜๊ฒŒ ๋˜์–ด, ๋ Œ๋”๋ง ๊ณผ์ •์—์„œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์š”์†Œ์˜ ์ˆ˜๊ฐ€ ์ ์–ด์ง€๋ฏ€๋กœ ์Šคํฌ๋กค ์„ฑ๋Šฅ์ด ๋”์šฑ ์›ํ™œํ•ด์ง€๊ฒ ์ฃ ?!

 

๊ฒฐ๋ก ์ ์œผ๋กœ, ์ผ๋ฐ˜ ์Šคํฌ๋กค์—์„œ๋Š” DOM์˜ ํ•ญ๋ชฉ์ด ์ง€์›Œ์ง€์ง€ ์•Š์ง€๋งŒ, ๊ฐ€์ƒ ์Šคํฌ๋กค์€ ํ•„์š” ์—†๋Š” ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ

ํŽ˜์ด์ง€ ๋‚ด์—์„œ์˜ ์›ํ™œํ•œ ์Šคํฌ๋กค๋ง ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํ•ญ๋ชฉ์„ ํ•œ ๋ฒˆ์— ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ , ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น ๋ฅด๊ณ  ์›ํ™œํ•œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฆฌ๋ Œ๋”๋ง ์„ฑ๋Šฅ ๋˜ํ•œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์Šคํฌ๋กค ๋ฐฉ์‹์—์„œ๋Š” ๋ชจ๋“  ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ์ด DOM์— ์กด์žฌํ•˜๋ฏ€๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กคํ•  ๋•Œ๋งˆ๋‹ค ๊ธฐ์กด ์š”์†Œ๊ฐ€ ์žฌ๋ Œ๋”๋ง๋˜๊ฑฐ๋‚˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์ด ๋ฐœ์ƒํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด, ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์—์„œ๋Š” ํ˜„์žฌ ํ™”๋ฉด์— ๋ณด์ด๋Š” ํ•ญ๋ชฉ๋งŒ ๋ Œ๋”๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฆฌ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ํ•ญ๋ชฉ์˜ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์–ด ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋„ ํ™”๋ฉด์— ๋ณด์ด๋Š” ํ•ญ๋ชฉ๋งŒ์„ ํšจ์œจ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด, ์ „์ฒด์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

 

๊ฒฐ๊ณผ์ ์œผ๋กœ, ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค๋„๋Ÿฝ๊ณ  ๋น ๋ฅธ ์Šคํฌ๋กค๋ง ๊ฒฝํ—˜์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝํ—˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

 

์‹ค์ œ๋กœ ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ์ƒ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŒ๋“  ๊ณณ์—์„  ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ์„๊นŒ?

์ƒ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ตฌํ˜„ ๋ฐฉ์‹

 react-window, react-virtualized, react-virtuoso ๊ด€๋ จ๋œ ๋ณ„๋„์˜ ๊ธ€๋กœ ๋ถ„๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค!

 

๋งˆ๋ฌด๋ฆฌ

๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ์›ํ™œํ•œ ์Šคํฌ๋กค๋ง ๊ฒฝํ—˜์„ ์ œ๊ณตํ• ๋•Œ ๋งค๋ ฅ์žˆ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค!

๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

 

์ €๋Š” ํ•™์Šต ๋ฐ ๊ฐœ์„ ์ ์„ ์ฐพ๊ธฐ์œ„ํ•ด ์Šค์Šค๋กœ ๊ตฌํ˜„์ค‘์— ์žˆ์Šต๋‹ˆ๋‹ค!

 

๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์ด ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•œ ๊ฒฝํ—˜

์‹ค์ œ๋กœ ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ฒŒ ๋  ๊ฒฝ์šฐ, DOM์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ์–ด์š”.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณ ๊ฐ๋‹น ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ 10๋งŒ ๊ฐœ์— ๋‹ฌํ•  ๊ฒฝ์šฐ, ์œ ์ €์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์žฅ์€ ๊ตฌํ˜„๋œ ํ”„๋กœ์ ํŠธ์— ๋ฌธ์ œ๊ฐ€ ์—†์–ด๋ณด์—ฌ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์„ ์ œ์ ์ธ ์กฐ์น˜๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ธฐ๋ฒ•๋“ค์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์Šคํฌ๋กค์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ๋‚จ์€ ๊ฐ€์ƒ ์Šคํฌ๋กค ์•„์ดํ…œ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋กœ์ง์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ์˜ ์–‘๊ณผ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ณต์žก์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์†์ ์ธ ๋…ธ๋ ฅ์ค‘์ž…๋‹ˆ๋‹ค!

 

 

 

๐Ÿ“ƒ ์ฐธ๊ณ  ๋ฌธํ—Œ  
์˜ค๋Š˜์˜์ง‘ ๋‚ด ๋ฌดํ•œ ์Šคํฌ๋กค ๊ฐœ๋ฐœ๊ธฐ
React Window ๊นƒํ—™
React Virtualized ๊นƒํ—™
React Virtuoso ๊นƒํ—™

 

์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ๊ณผ์ œ๋กœ ์ง„ํ–‰ํ–ˆ๋˜ ๋ฌดํ•œ์Šคํฌ๋กค์— ์ ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

ํ•ด๋‹น ๊ธ€์—์„  ๋ฒ„์ถ”์–ผ ์Šคํฌ๋กค์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ๋„์ž…์„ ์œ„ํ•ด ์ฐพ์•„๋ณธ ์ด๋ฏธ ์ƒ์šฉํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

 

์ธ๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ์š”

๊ฒ€ํ† ํ•ด๋ณธ ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋Š” react-window, react-virtualized, react-virtuoso๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ณ ์œ ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ์„ฑ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถ”์–ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ด ์ค‘์—์„œ React Virtualized๋Š” ๊ฐ€๋ฒผ์›Œ์ง„ ๋ฒ„์ „์ธ React Window๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, React Virtuoso๋Š” ๋น„๊ต์  ์ตœ๊ทผ์— ์ถœ์‹œ๋˜์–ด ์‚ฌ์šฉ๋Ÿ‰์ด ์ ์ง€๋งŒ ์ ์  ์ธ๊ธฐ๋ฅผ ๋Œ๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. React Virtuoso๋Š” React Window์—๋Š” ์—†๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ง€์›ํ•˜์—ฌ ๊ฐ€๋ณ๊ณ  ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๋‹ค์–‘ํ•œ ์š”๊ตฌ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐ€์ƒ ์Šคํฌ๋กค์„ ํ†ตํ•ด ์Šคํฌ๋กค์„ ๋‚ด๋ฆด ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Š๊น€ ์—†์ด ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” windowing ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

 

Windowing

Windowing์€ ํ˜„์žฌ ํ™”๋ฉด์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธด ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ Œ๋”๋งํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ณ  ๋ ‰์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, windowing ๊ธฐ์ˆ ์„ ํ†ตํ•ด ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์—˜๋ฆฌ๋‹˜์˜ ๋“œ๋ฆผ ์ฝ”๋”ฉ Express ๊ฐ•์˜์˜ Rate Limit ๊ด€๋ จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•™์Šตํ•˜๋ฉฐ ์•Œ๊ฒŒ ๋๋˜ ๊ฐœ๋…์ธ๋ฐ ๋‹ค์‹œ ๋ณด๋‹ˆ ๊ดœํžˆ ๋ฐ˜๊ฐ‘๋„ค์š”! ใ…Žใ…Ž

 

์Šคํฌ๋กค ์œ„์น˜

  • React Virtualized๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กคํ•œ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์–ด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ๊ทธ ์œ„์น˜์—์„œ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • React Window๋Š” ์Šคํฌ๋กค ์œ„์น˜ ์ €์žฅ ๊ธฐ๋Šฅ์ด ์—†์–ด, ์ƒˆ๋กœ๊ณ ์นจ ํ›„ ์ตœ์ƒ๋‹จ ํ•ญ๋ชฉ์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 1000๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ ์ค‘ 700๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ๋ณด๊ณ  ์žˆ๋‹ค๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์ตœ์ƒ๋‹จ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…์œผ๋กœ ์ธํ•ด ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™ ์‹œ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜์ง€๋งŒ, URL์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์Šคํฌ๋กค ์œ„์น˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์–ด ํŽ˜์ด์ง€๊ฐ€ ์–ธ๋งˆ์šดํŠธ๋˜๊ณ  ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  • ์–ธ๋งˆ์šดํŠธ ์‹œ API ์š”์ฒญ์ด ๋‹ค์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Context API, Redux, React Query ๋“ฑ์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ API ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋†’์ด ๊ณ„์‚ฐ (์ •์ , ๋™์ )

  • React Window๋Š” ์ •์ ์ธ ๋†’์ด๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ์˜ ๋†’์ด๊ฐ€ ์ผ์ •ํ•ด์•ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • React Virtualized๋Š” ๋™์ ์ธ ๋†’์ด๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ์˜ ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋†’์ด๊ฐ€ ๋‹ฌ๋ผ์ ธ๋„ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด CellMeasurer ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒˆ๋กœ์šด ์ฝ˜ํ…์ธ ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ ๋†’์ด๋ฅผ ์ž๋™์œผ๋กœ ์žฌ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  • CellMeasurer์™€ ํ•จ๊ป˜ CellMeasurerCache๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋†’์ด๋ฅผ ์บ์‹œํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

React Window

 

  • ๋ชฉ์ : ๋งŽ์€ ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ์™€ ํ‘œ ํ˜•์‹ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋งํ•˜์—ฌ ๋ทฐํฌํŠธ์— ๋ณด์ด๋Š” ํ•ญ๋ชฉ๋งŒ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์š” ๊ธฐ๋Šฅ:
    • React Window๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์ ์ธ ๋†’์ด๋ฅผ ๊ฐ€์ง„ ๋ฆฌ์ŠคํŠธ์™€ ๊ทธ๋ฆฌ๋“œ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฒฝ๋Ÿ‰ํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
    • DOM ๋…ธ๋“œ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋ Œ๋”๋ง ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ž…๋‹ˆ๋‹ค.
    • ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ๊ฐ„๋‹จํ•œ API๋กœ ์„ฑ๋Šฅ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.
    • react-window-infinite-loader์™€ ๊ฐ™์€ ์™ธ๋ถ€ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ง€์—ฐ ๋กœ๋”ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ๋ฒ•: ์ตœ์†Œํ•œ์˜ ์„ค์ •์œผ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ๊ณผ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋˜ํ•œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

React Virtualized

 

  • ๋ชฉ์ : React Window์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋” ๋ณต์žกํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์œ„ํ•œ ํญ๋„“์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์š” ๊ธฐ๋Šฅ:
    • React Virtualized๋Š” ๊ฐ€์ƒํ™”๋œ ๊ทธ๋ฆฌ๋“œ, ํ•„ํ„ฐ๋ง, ์ •๋ ฌ, ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
      • ๊ฐ€์ƒํ™”๋œ ๊ทธ๋ฆฌ๋“œ๋Š” ๋™์ ์ธ ๋†’์ด ๊ณ„์‚ฐ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๊ธฐ ์ข‹์€ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.
      • ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์€ ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ํ•ญ๋ชฉ๋งŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ •๋ ฌ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ์˜ ์ˆœ์„œ๋ฅผ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ผ๋ถ€ ์Šคํƒ€์ผ์— CSS๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ํŠน์ • ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ์ž„ํฌํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด shallowCompare๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ props๋‚˜ state๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ๋ฒ•: ๋ณต์žกํ•œ API ๋•Œ๋ฌธ์— ์„ค์ •์ด ๋” ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, react-window๋‚˜ react-virtuoso์™€ ๋น„๊ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

React Virtuoso

  • ๋ชฉ์ : ๊ฐ€๋ณ€ ํฌ๊ธฐ ํ•ญ๋ชฉ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํฌ๊ด„์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์š” ๊ธฐ๋Šฅ:
    • ์ˆ˜๋™ ํฌ๊ธฐ ์กฐ์ • ์—†์ด ๊ฐ€๋ณ€ ํฌ๊ธฐ ํ•ญ๋ชฉ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€ ๋ฆฌ์ŠคํŠธ
    • ์Šคํ‹ฐํ‚ค ํ—ค๋”๊ฐ€ ์žˆ๋Š” ๊ทธ๋ฃนํ™”๋œ ํ•ญ๋ชฉ
      • ๋ฆฌ์ŠคํŠธ์˜ ํ•ญ๋ชฉ์„ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๊ทธ๋ฃนํ™” ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค!(์ œ๊ฐ€ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์ด๋ผ ํ’€์–ด ์ ์„๊ฒŒ์š”!) ์˜ˆ๋ฅผ ๋“ค์–ด, ์ œํ’ˆ ๋ฆฌ์ŠคํŠธ๊ฐ€ "๊ณผ์ผ"์ด๋‚˜ "์ฑ„์†Œ"์™€ ๊ฐ™์€ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋‚˜๋‰˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ทธ๋ฃน์—๋Š” ์ƒ๋‹จ์— ๊ณ ์ •๋œ ํ—ค๋”๊ฐ€ ์žˆ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์Šคํฌ๋กคํ•  ๋•Œ ํ˜„์žฌ ์–ด๋–ค ๊ทธ๋ฃน์„ ๋ณด๊ณ  ์žˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด ์Šคํ‹ฐํ‚ค ํ—ค๋” ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋‚˜์€ ๋งฅ๋ฝ์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
    • ๋ฌดํ•œ ์Šคํฌ๋กค ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • CSS ํด๋ž˜์Šค ์†์„ฑ์„ ํ†ตํ•ด ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ•ญ๋ชฉ์„ ์—ฌ๋Ÿฌ ์—ด๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ๋ฒ•: ๋ณต์žกํ•œ ๋ฆฌ์ŠคํŠธ ๋ทฐ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ์ง๊ด€์ ์ธ API๋กœ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์š”์•ฝ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

  • ์„ฑ๋Šฅ: ์„ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋‘ DOM ๋…ธ๋“œ๋ฅผ ์ค„์ด๊ณ  ๋ Œ๋”๋ง์„ ์ตœ์ ํ™”ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.
  • ๋ณต์žก์„ฑ: React Window๊ฐ€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๊ฒฝ๋Ÿ‰์ด๋ฉฐ, React Virtualized๋Š” ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. React Virtuoso๋Š” ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๊ณผ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์˜ ๊ท ํ˜•์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ •์˜: ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”์— ๋งž๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ React Virtuoso์™€ React Virtualized๋Š” ์Šคํƒ€์ผ์ด๋‚˜ ๋ ˆ์ด์•„์›ƒ์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์œ ์—ฐ์„ฑ์„ ์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๋“ค์€ ์ž์‹ ๋งŒ์˜ ๋””์ž์ธ ์š”๊ตฌ์— ๋งž์ถฐ ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ, ์ƒ‰์ƒ, ๋ฐฐ์น˜ ๋“ฑ์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
  • React Window๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฆฌ์ŠคํŠธ์™€ ๊ทธ๋ฆฌ๋“œ, ์ •์ ์ธ ๋†’์ด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ํ•„์š” ์—†๋Š” ๊ธฐ๋Šฅ๋“ค์€ ์ œ๊ฑฐํ•˜์—ฌ ๊ฐ€๋ณ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์€ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•˜์ง€๋งŒ, ๊ธฐ๋Šฅ์ด ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.
  • React Virtualized๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฉฐ, ๋ณต์žกํ•œ UI/UX๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ์œ ์šฉํ•˜์ง€๋งŒ, ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ํฐ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • React Virtuoso๋Š” ๊ฒฝ๋Ÿ‰ํ™”์™€ ๊ฐ„ํŽธํ•จ์„ ์ถ”๊ตฌํ•˜๋ฉฐ, ์ตœ๊ทผ ์ธ๊ธฐ๋ฅผ ๋Œ๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ๋งŽ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํŠน์„ฑ๊ณผ ์žฅ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ์— ๋งž์ถฐ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ“ƒ ์ฐธ๊ณ  ๋ฌธํ—Œ  
React Window ๊นƒํ—™
React Virtualized ๊นƒํ—™
React Virtuoso ๊นƒํ—™
react-virtualized vs react-virtuoso vs react-window (npm-trends)
Which is Better Virtual Scrolling Libraries? (npm-compare)

 

+ Recent posts