ํ๋ก์ ํธ์ ๋์
๋ ๋ฌดํ ์คํฌ๋กค์ ๊ฐ๋ฐ ์ค์ธ ์ํฉ์
๋๋ค.
๊ฐ๋ฐ์ ์งํํ๋ ์ค ๋ฐ์ดํฐ๊ฐ ๋ฌด์ํ ๋ง์์ง ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์๊น๋ผ๋ ์๊ฐ์ ๋ฌดํ ์คํฌ๋กค์ ๋ํ ์ต์ ํ๋ฅผ ๊ณ ๋ฏผํ๊ฒ ๋์์ต๋๋ค!
์ฌ๋ฌ ์ต์ ํ ์ค ํ๋๋ ๋ฒ์ธ์ผ ์คํฌ๋กค์ ๋ํด ํํธ๋ฅผ ๋๋ ๊ธฐ๋กํด๋๋ ค ํด์!
๋ฒ์ธ์ผ ์คํฌ๋กค ์ด๋?
๋ฒ์ธ์ผ ์คํฌ๋กค(Virtual Scroll)์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ธฐ์ ๋ก, ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ๋ณด๊ณ ์๋ ํญ๋ชฉ๋ง ๋ ๋๋งํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํฉ๋๋ค.
ํนํ, ๋ฆฌ์คํธ๋ ๊ทธ๋ฆฌ๋ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฒ ๋ธ๋ก๊ทธ์์๋ ๋ฒ์ธ์ผ ์คํฌ๋กค์ ์ฌ์ฉํด์ผ ํ ์ํฉ๊ณผ, ์ค์ ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์์ ๊ตฌํ ๋ฐฉ์์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ค๋ช ์ ๋ณ๋์ ๊ธ๋ก ๋ถ๋ฆฌํ์์ต๋๋ค!
๋ฒ์ธ์ผ ์คํฌ๋กค์ ์ด๋ ์ํฉ์์ ์จ์ผ ํ ๊น?
๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
๋ฒ์ธ์ผ ์คํฌ๋กค์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์์ ์ด๋ผ ์๊ฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ์ฉ์์๊ฒ ์์ฒ ์๋ง ๊ฐ์ ํญ๋ชฉ์ด ํฌํจ๋ ๋ฆฌ์คํธ๋ฅผ ๋ณด์ฌ์ค์ผ ํ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ํญ๋ชฉ์ ํ ๋ฒ์ ๋ ๋๋งํ๋ฉด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ด ๋, ํ์ฌ ํ๋ฉด์ ๋ณด์ด๋ ํญ๋ชฉ๋ง ๋ ๋๋งํจ์ผ๋ก์จ ๋ ๋๋ง ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์คํฌ๋กค ์ฑ๋ฅ ๊ฐ์
์ผ๋ฐ์ ์ธ ์คํฌ๋กค ๋ฐฉ์์์๋ ๋ชจ๋ ๋ฆฌ์คํธ ํญ๋ชฉ์ด DOM์ ์กด์ฌํ๊ฒ ๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์คํฌ๋กคํ ๋ ํ๋ฉด์ ๋ณด์ด๋ ํญ๋ชฉ์ ๋ฐ๋์ง๋ง, DOM์์ ๋ชจ๋ ์์๊ฐ ๊ณ์ ์ ์ง๋๋ฏ๋ก ์ง์์ง๊ฑฐ๋ ์ถ๊ฐ๋๋ ๊ณผ์ ์ด ์์ต๋๋ค.
๋์ , ๋ธ๋ผ์ฐ์ ๋ ์คํฌ๋กค์ ๋ฐ๋ผ ๋ณด์ด์ง ์๋ ํญ๋ชฉ๋ค์ ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ๋๊ณ ์์ด, ์ ์ฒด ๋ฆฌ์คํธ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ๋ ๋๋ง ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
๋ฐ๋ฉด, ๊ฐ์ ์คํฌ๋กค์์๋ ์คํฌ๋กคํ ๋ ํ์ฌ ํ๋ฉด์ ๋ณด์ด๋ ํญ๋ชฉ๋ง DOM์ ๋ ๋๋งํ๊ณ , ๋๋จธ์ง ํญ๋ชฉ์ DOM์์ ์ง์ฐ๊ฑฐ๋ ์จ๊น๋๋ค.
์ด๋ ๊ฒ ํจ์ผ๋ก์จ, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง๋๋ ์์์ ์๊ฐ ์ค์ด๋ค์ด ์ฑ๋ฅ์ด ๊ฐ์ ๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์คํฌ๋กคํ ๋ ํ์ํ ๋งํผ์ ํญ๋ชฉ๋ง ์์ฑํ๊ณ , ๋ณด์ด์ง ์๋ ํญ๋ชฉ์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํ๊ฒ ๋์ด, ๋ ๋๋ง ๊ณผ์ ์์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฒ๋ฆฌํด์ผ ํ ์์์ ์๊ฐ ์ ์ด์ง๋ฏ๋ก ์คํฌ๋กค ์ฑ๋ฅ์ด ๋์ฑ ์ํํด์ง๊ฒ ์ฃ ?!
๊ฒฐ๋ก ์ ์ผ๋ก, ์ผ๋ฐ ์คํฌ๋กค์์๋ DOM์ ํญ๋ชฉ์ด ์ง์์ง์ง ์์ง๋ง, ๊ฐ์ ์คํฌ๋กค์ ํ์ ์๋ ํญ๋ชฉ์ ์ ๊ฑฐํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ์์ ๋๋ค.
์ฌ์ฉ์ ๊ฒฝํ ํฅ์
ํ์ด์ง ๋ด์์์ ์ํํ ์คํฌ๋กค๋ง ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด์๋ ๋ฒ์ธ์ผ ์คํฌ๋กค์ด ํ์ํฉ๋๋ค.
๋ชจ๋ ํญ๋ชฉ์ ํ ๋ฒ์ ๋ก๋ํ์ง ์๊ณ , ํ์ํ ๋งํผ๋ง ๋ก๋ํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ณ ์ํํ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋ฆฌ๋ ๋๋ง ์ฑ๋ฅ ๋ํ ๊ณ ๋ คํด์ผ ํ ๋ถ๋ถ์ ๋๋ค.
์ผ๋ฐ์ ์ธ ์คํฌ๋กค ๋ฐฉ์์์๋ ๋ชจ๋ ๋ฆฌ์คํธ ํญ๋ชฉ์ด DOM์ ์กด์ฌํ๋ฏ๋ก, ์ฌ์ฉ์๊ฐ ์คํฌ๋กคํ ๋๋ง๋ค ๊ธฐ์กด ์์๊ฐ ์ฌ๋ ๋๋ง๋๊ฑฐ๋ ์์น๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ์ ์์ต๋๋ค.
์ด ๊ณผ์ ์์ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๋ฉด ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ฐ๋ฉด, ๋ฒ์ธ์ผ ์คํฌ๋กค์์๋ ํ์ฌ ํ๋ฉด์ ๋ณด์ด๋ ํญ๋ชฉ๋ง ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์, ๋ฆฌ๋ ๋๋ง์ด ํ์ํ ํญ๋ชฉ์ ์๊ฐ ์ค์ด๋ค์ด ์ฑ๋ฅ์ด ๊ฐ์ ๋ฉ๋๋ค.
๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ ํ๋ฉด์ ๋ณด์ด๋ ํญ๋ชฉ๋ง์ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ด, ์ ์ฒด์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ฒ์ธ์ผ ์คํฌ๋กค์ ํตํด ์ฌ์ฉ์์๊ฒ ๋งค๋๋ฝ๊ณ ๋น ๋ฅธ ์คํฌ๋กค๋ง ๊ฒฝํ์ ์ ๊ณตํจ์ผ๋ก์จ, ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝํ์ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ํ์ํ๊ณ , ํ์ํ ๋ ๋น ๋ฅด๊ฒ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋๋ก ๋์์ค๋๋ค.
์ค์ ๋ก ๋ฒ์ธ์ผ ์คํฌ๋กค์ ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ ๊ณณ์์ ์ด๋ป๊ฒ ๊ตฌํํ์๊น?
์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌํ ๋ฐฉ์
react-window, react-virtualized, react-virtuoso ๊ด๋ จ๋ ๋ณ๋์ ๊ธ๋ก ๋ถ๋ฆฌํ์์ต๋๋ค!
๋ง๋ฌด๋ฆฌ
๋ฒ์ธ์ผ ์คํฌ๋กค์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ์ฌ์ฉ์์๊ฒ ์ํํ ์คํฌ๋กค๋ง ๊ฒฝํ์ ์ ๊ณตํ ๋ ๋งค๋ ฅ์๋ ๊ธฐ์ ์ ๋๋ค!
๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๊ณ ์์ผ๋ฉฐ, ํ๋ก์ ํธ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ ํฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ ๋ ํ์ต ๋ฐ ๊ฐ์ ์ ์ ์ฐพ๊ธฐ์ํด ์ค์ค๋ก ๊ตฌํ์ค์ ์์ต๋๋ค!
๋ฒ์ธ์ผ ์คํฌ๋กค์ด ํ์ํ ์ด์ ์ ๋ํ ๊ฒฝํ
์ค์ ๋ก ํ์ฌ ํ์ฌ์์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ฒ ๋ ๊ฒฝ์ฐ, DOM์ ํฌ๊ธฐ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ์์ด์.
์๋ฅผ ๋ค์ด, ๊ณ ๊ฐ๋น ๋ณด์ฌ์ค ์ ์๋ ๋ฐ์ดํฐ๊ฐ 10๋ง ๊ฐ์ ๋ฌํ ๊ฒฝ์ฐ, ์ ์ ์ ๋ฐ์ดํฐ๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋ฉด์ ์ฑ๋ฅ ์ต์ ํ๊ฐ ํ์ํด์ง ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์ด์ ๋ก ๋ฒ์ธ์ผ ์คํฌ๋กค์ ๋์ ํ๊ฒ ๋์์ต๋๋ค.
๋น์ฅ์ ๊ตฌํ๋ ํ๋ก์ ํธ์ ๋ฌธ์ ๊ฐ ์์ด๋ณด์ฌ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ธฐ ์ํ ์ ์ ์ ์ธ ์กฐ์น๋ก ์๊ฐํฉ๋๋ค.
๋ฒ์ธ์ผ ์คํฌ๋กค์ ๊ตฌํํ๋ฉด์ ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ธฐ๋ฒ๋ค์ ์ฌ์ฉํ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์คํฌ๋กค์ ํตํด ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ํ์ํ ๋, ๋จ์ ๊ฐ์ ์คํฌ๋กค ์์ดํ ์ด ์๋์ง ํ๋จํ๋ ๋ก์ง์ ํตํด ํ์ํ ๋งํผ๋ง ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋๋ก ์ค๊ณํ์ต๋๋ค.
์ด ๊ณผ์ ์์ ๋ฐ์ดํฐ์ ์๊ณผ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ณต์ก์ฑ์ ๊ณ ๋ คํ์ฌ ์ต์ ์ ์ฑ๋ฅ์ ์ ์งํ ์ ์๋๋ก ์ง์์ ์ธ ๋ ธ๋ ฅ์ค์ ๋๋ค!
๐ ์ฐธ๊ณ ๋ฌธํ |
์ค๋์์ง ๋ด ๋ฌดํ ์คํฌ๋กค ๊ฐ๋ฐ๊ธฐ |
React Window ๊นํ |
React Virtualized ๊นํ |
React Virtuoso ๊นํ |