React-window: VariableSizeList ๋™์  ํ•ญ๋ชฉ ๋†’์ด

์— ๋งŒ๋“  2019๋…„ 03์›” 26์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: bvaughn/react-window

๋†’์ด๋ฅผ ๊ณ ์ •ํ•˜๋Š” ์˜ˆ์—์„œ์™€ ๊ฐ™์ด ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ญ๋ชฉ ์š”์†Œ์˜ ๋†’์ด๋Š” ์–ด๋–ป๊ฒŒ ์ธก์ •ํ•ฉ๋‹ˆ๊นŒ? ์•„๋งˆ๋„ ๋‚˜๋Š” ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ญ”๊ฐ€๋ฅผ ๋†“์ณค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ €๋Š” ๋™์  ๋†’์ด๊ฐ€ ์žˆ๋Š” ์ฑ„ํŒ… ๋ชฉ๋ก์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@bvaughn ๋‹˜, ๋น„๊ณต๊ฐœ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ธ€์„ ์จ์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ช…ํ™•ํžˆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค ...
๋‚ด ๋ชฉ๋ก ํ•ญ๋ชฉ์˜ ๋†’์ด๋ฅผ ๋ฏธ๋ฆฌ ์•Œ์ง€ ๋ชปํ•œ๋‹ค๋ฉด VariableSizeList๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์  ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ๋Š” ๋ชฉ๋ก ํ•ญ๋ชฉ์„ ๋ Œ๋”๋งํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชฉ๋ก ํ•ญ๋ชฉ ์ค‘ ์ผ๋ถ€์— ๋ฏธ๋ฆฌ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ VariableSizeList๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐฝ/๊ฐ€์ƒํ™” ๋ชฉ๋ก์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  4 ๋Œ“๊ธ€

+1

์ด๋Š” ์•„์ง ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ ์‹œ์— ์ฝ˜ํ…์ธ ๋ฅผ ์ธก์ •ํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

์ง€์› ์ƒํƒœ๋Š” ๋ฌธ์ œ #6์„ ํ™•์ธํ•˜์„ธ์š”.

@bvaughn ๋‹˜, ๋น„๊ณต๊ฐœ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ธ€์„ ์จ์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ช…ํ™•ํžˆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค ...
๋‚ด ๋ชฉ๋ก ํ•ญ๋ชฉ์˜ ๋†’์ด๋ฅผ ๋ฏธ๋ฆฌ ์•Œ์ง€ ๋ชปํ•œ๋‹ค๋ฉด VariableSizeList๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์  ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ๋Š” ๋ชฉ๋ก ํ•ญ๋ชฉ์„ ๋ Œ๋”๋งํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชฉ๋ก ํ•ญ๋ชฉ ์ค‘ ์ผ๋ถ€์— ๋ฏธ๋ฆฌ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ VariableSizeList๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐฝ/๊ฐ€์ƒํ™” ๋ชฉ๋ก์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡๋‹ค๋ฉด ๋ Œ๋”๋ง ์ „์— ์ œ์•ˆ๋œ ์ฝ˜ํ…์ธ ๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋Š” ์—†๋‚˜์š”?

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฉ”์‹œ์ง€ ์ฐฝ์„ ๊ฐ€์ƒํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธ€๊ผด, ํฌ๊ธฐ ๋ฐ ํ…์ŠคํŠธ ๋‚ด์šฉ์„ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ฉ”์‹œ์ง€ ํ’์„ ์˜ ๋„ˆ๋น„๊ฐ€ 500px์ธ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ Œ๋”๋งํ•˜์ง€ ์•Š๋Š” ํ•œ ํ’์„ ์˜ ๋†’์ด๋ฅผ ์•Œ์•„๋‚ผ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๊นŒ?

์ ์‹œ ์ธก์ •์€ ๊ฐ€์ƒํ™”์˜ ๋ชฉ์ ์„ ์ขŒ์ ˆ์‹œํ‚ต๋‹ˆ๋‹ค...

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ  ๋†€๋ผ์šด ํŒจํ‚ค์ง€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋ฏธ๋””์–ด ํ”ผ๋“œ์— ์•„์ฃผ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


ํŽธ์ง‘: ๊ฒฐ๊ณผ์ ์œผ๋กœ JIT(Just-In-Time) ๋ Œ๋”๋ง์€ ํŠนํžˆ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์ œ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค: https://codesandbox.io/s/dynamic-size-of-react-window-list-items-64o9p

์ด ์˜๊ฒฌ์— ๋”ฐ๋ผ: https://github.com/bvaughn/react-window/issues/6#issuecomment -538261156

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰