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

 

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

 

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

๊ฒ€ํ† ํ•ด๋ณธ ๋ฒ„์ธ„์–ผ ์Šคํฌ๋กค์„ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋Š” 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