WARNING
์์ง ์์ฑ์ค์ด๊ฑฐ๋ ๊ฒํ ์ค์ธ ๊ธ์ ๋๋ค. ๋ด์ฉ์ด ๋ถ์ ํํ๊ฑฐ๋ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค
์๋ก โ
๋์์ธํ๊ณผ ์กธ์ ์ ์ ์น์ฌ์ดํธ ํ์ ์งํ ์ค
์ ์ฒด ํ์ด์ง์ ์ํ ์์ฝ๋์ธ ์ ๋๋ฉ์ด์ ์ ๋ฃ์ผ๋ ค๊ณ ์ฒ์์ ๋ชจ๋ ํ์ด์ง๋ฅผ ํ ๋ฒ์ ๋ง์ดํธํด์ max-width๋ก ์ ์ ๊ทผ๋ฐ Lighthouse์์ DOM ์์ 3,495๊ฐ ๊ฒฝ๊ณ ๋จ๊ณ TBT ๋๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋ ๊ณ์ ๋์ด๋จ ์ธ๋ง์ดํธ ?
๋ฌธ์ ์ ๊ทผ๋ฐฉ๋ฒ โ
React Transition Group์ผ๋ก ์ํ ์ ์ด์ ๋ฐ๋ผ in=true/false๋ก ์ ๋๋ฉ์ด์ ์๋ ์ปดํฌ๋ํธ๋ง๋ค enter/exit ์ ๋๋ฉ์ด์ ๋๋๋ฉด ์๋์ผ๋ก ์ธ๋ง์ดํธ ๋๋๋ก ์ฒ๋ฆฌ switch transition๋ ๊ณ ๋ คํ์ง๋ง, ์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋์์ ๋ค๋ค์ผ ํด์ transitionGroup ์ ํ CSS๋ก transform ๊ธฐ๋ฐ ์ ๋๋ฉ์ด์ ๊ตฌํํด์ reflow/repaint ์ต์ํ
ํด๊ฒฐ๋ฐฉ๋ฒ โ
<TransitionGroup><CSSTransition>
๊ตฌ์กฐ๋ก ์ ํ ํ๋ฆ ์ ์ด
์ ํ ์ DOM์ ๋ ๋ค ๋จ๊ฒจ๋๊ณ , ํด์ฅ ํ์ด์ง๋ exit ์ ๋๋ฉ์ด์ ํ DOM์์ ์ ๊ฑฐ ์ ํ์ด์ง๋ enter > entered ์ํ๋ก ์์ฐ์ค๋ฝ๊ฒ ๋ฑ์ฅ css transform: translateX()๋ก GPU ๊ฐ์ ์ ๋ timeout ๋๋ transitionend ๋ก ์ ๋๋ฉ์ด์ ์๋ฃ ๊ฐ์ง -> ,์ธ๋ง์ดํธ