๋ฆฌ์กํธ๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ฉด, ํจ์จ์ฑ์ด๋ผ๋ ๋จ์ด๋ฅผ ๋นผ๋์ ์๊ฐ ์๋ ๊ฒ ๊ฐ๋ค. ์ ๋ฒ์ ์ ๋ฆฌํ๋ DOM์์์ ๊ฐ์ ๋๋ ๊ทธ๋ ๊ณ , ์ด๋ค ํ ๊ฐ๋ ์ ๊ณต๋ถํ ๋๋ง๋ค ๊ทธ ๊ฐ๋ ์ด ํจ์จ์ ์ด๊ฒ ๋์์ค๋ค๊ณ ํ๋ ๊ฒ์ด ๋ง๋ค๋๊ฒ์ด๋ค.
๋๋ ์ ์ ์ด๋ฐ ์ง๋ฌธ์ ๋ฐ์ ์ ์ด ์๋ค. '๋ฆฌ๋ ๋๋ง์ด ๋ญ์ง ์์๋์?'
์ด ๊ธ์ ๋ณด๋ ์ฌ๋ฌ๋ถ๋ค์ ๋ฌด์จ ๋๋ต์ ํ๊ฒ ๋๊ฐ?
๋๋ ๊ทธ๋๋ ๋ถ๋๋ฝ์ง๋ง ๋ฆฌ๋ ๋๋ง์ด ๊ทธ๋ฅ ๋ ๋๋ง์ ๋ค์ํ๋ค๋ ๊ฑฐ ์๋๊ฐ? ์ด๋ ๊ฒ ์๊ฐํ์๋ค.
์ฌ์ค ๋ง ๋ป์ ๊ทธ๋ ๋ค. ํ์ง๋ง, ์ง๋ฌธ์ ์๋๊ฐ ๊ณผ์ฐ ์ง์ง ๋ป์ ๋ฌผ์ด๋ณด๋ ๊ฒ์ด์์๊น?
์ด๋ ๋ชจ๋ ์ง๋ฌธ์ ๋ต์ ๊ฐ๋ก๊ฐ์ด ํ ๋๋ ์ง์ ์์ ์ฐจ๋ถํ ๋ค ์ ์ด๋จ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๊ณต๋ถํ๋ฉด์ ์ฑ์๋๊ฐ๊ธฐ ์์ํ๋ค.
๋ฆฌ๋ ๋๋ง์ ๋ฌด์์ธ์ง ๊ทผ๋ณธ๋ถํฐ ์์์ผํ๋ฉฐ, ์ ์ด๊ฑธ ์์์ผํ๋์ง, ์ด๋์์ ์ด ๊ฐ๋ ์ด ์ฐ์ด๋ ๊ฑด์ง ๋ฑ ๋ด๊ฐ ์ผ๋ง๋ ์ง์ฌ์ผ๋ก ์ฌ์ฉํ๊ณ ๋๊ผ๋ ๋ฐ๋ฅผ ๊ณ๋ค์ฌ์ ๋งํด์ผํ๋ค.
๋๋ฒ ๋ค์ ๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ์๊ธฐ ์ํด์ ์ด๋ ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
์ด๋์ ์ง์ง ๊ฒฝํ์ด ์ค์ํ๋ค ์๊ฐํ๋ค. ์ข์ ๊ฒฝํ์ด๋ ๋์ ๊ฒฝํ์ด๋ ๊ตํ์ ๋๋ผ๋ ๊ฒ ๊ฐ๋ค.
์ด๋ฒ์ ์ด ๋ฆฌ๋ ๋๋ง์ ์ฐพ์๋ณด๋ค๊ฐ ์ ๋ฆฌ๋ฅผ ์ ํด๋์ ๋ธ๋ก๊ทธ๊ฐ ์๊ธธ๋ ์ฐธ๊ณ ํด์ ์์ฑํ์๋ค.
์ฌ๊ธฐ์ ์ปดํฌ๋ํธ์ renderํจ์๋ฅผ ์ฌ์ฉํด์ ์ค๋ช ์ ๊ณ์ํ๊ธฐ ๋๋ฌธ์ ๊ณ์ ์ปดํฌ๋ํธ์ ๋ ๋ํจ์์ ๋ํด์ ์ง๊ณ ๋์ด๊ฐ๊ฒ ๋ค!
์ปดํฌ๋ํธ
๋ถํ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๋ฒํผ, ํ ์คํธ ๋ฐ์ค ๋ฑ์ ์์๋ค์ ์ปดํฌ๋ํธ๋ก ์ ์ํด์ ๊ณต์ฅ์ฒ๋ผ UI๋ฅผ ์ค๊ณํ ์ ์๋ค. ์ด๋ ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๊ฒ ๋ง๋ค์ด์ฃผ๋ฉฐ, ๋ฌด์๋ณด๋ค ์ปดํฌ๋ํธ ๋ด์ ์๊น์ ๋ฐ ์๋๋ฐฉ์์ ์ ์ํด์ค๋ค.
Render ํจ์
UI๋ฅผ ๋ํ๋ผ ๋ ๋์ ๋ณด์ด๋ ํ๋ฉด์ ๊ตฌ์ฑํด์ฃผ๋ ๋ ๋๋ง์ด ํ์ํ๋ค.
๋ฆฌ์กํธ์์๋ renderํจ์๊ฐ ๊ทธ ์ญํ ์ ํ๋ค.
renderํจ์๋ ์ปดํฌ๋ํธ๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์ ์ํ๊ณ , ๋ทฐ์ ๊ตฌ์ฑ๊ณผ ์๋ ๋ฐฉ์์ ๋ํ ์ ๋ณด๋ฅผ ์ง๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
์ด๊ธฐ ๋ ๋๋ง
renderํจ์๋ก ์ปดํฌ๋ํธ์ ์ ๋ณด๋ฅผ ์ด์ฉํด ํ๋ฉด์ ๊ตฌ์ฑ(๋ ๋๋ง)ํ๋ค.
๋ ๋๋ง์ด ๋๋ฉด, renderํจ์๊ฐ ๋ฐํํ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด ํ์์ html ์ฝ๋๋ฅผ ๋ฐํํด์ ํน์ DOM์ ์ฃผ์ ํ๋ค.
- ์ปดํฌ๋ํธ ์ ์
- ์ปดํฌ๋ํธ์ ์ ๋ณด๋ฅผ ์ด์ฉํด ๋ ๋๋ง
- ๋ฌธ์์ด ํ์ html ์ฝ๋ ๋ฐํ
- DOM์์์ ์ฃผ์
๋ฆฌ๋ ๋๋ง
๋ฆฌ์กํธ์์ ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธ ํ ๋๋ฅผ ๋ฆฌ๋ ๋๋งํ๋ค๊ณ ํ๋ค. ์ด๊ฒ์ ์ ์ DOM ๊ฐ๋ ์ ๊ณต๋ถํ๋ ๊ฒ์ ์ฌ๊ธฐ์ ์ ๋ชฉ์ํค๋ฉด๋๋ค! ๋ฆฌ๋ ๋๋ง์ ํ๋ฉด, ๋ทฐ๋ฅผ ๋ณํ์ํค๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์ฌ์ค renderํจ์๋ก ์ธํด ์๋ก์ด ์์๋ก ๊ฐ์๋ผ์์ง๋ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ์ ๋, ์ปดํฌ๋ํธ๋ renderํจ์๋ฅผ ์ฌ์ฐจ ํธ์ถํด์ ์๋ก์ด ๋ทฐ๋ฅผ ์์ฑํ๋ค. ์ด๊ฒ์ DOM์ ๊ณ์ ์๋ก ๊ฐ์์ผํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ฒ๋ผ ๊ณผ๋ํ ์ฌ์ฉ์ผ๋ก ํจ์จ์ฑ์ด ๊ต์ฅํ ๋จ์ด์ง๋ค. ์ด๋ฅผ ๋ฆฌ์กํธ์์ ๊ฐ์ DOM์ ์ฌ์ฉํด์ ์ต์ข ์ ์ผ๋ก ๋ณํ ๋ถ๋ถ๋ง DOM์ ์ ์ฉํ๋ฏ์ด, ์ด์ ์ ์์ฑํ ์ปดํฌ๋ํธ ์ ๋ณด์ ๋ค์ ๋ ๋๋งํ ์ ๋ณด๋ฅผ ๋น๊ตํด ์ต์ํ์ ์ฐ์ฐ์ผ๋ก DOMํธ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ๊ฒ ๋๋ค๊ณ ๋ณด์๋ค.
์ ๋ฆฌํ๋ฉด,
- ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ
- ์ ๋ฐ์ดํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ renderํจ์์ ๋ฆฌ๋ ๋๋ง
- ์ด์ ์ ์ปดํฌ๋ํธ, ๋ฆฌ๋ ๋๋ง๋ ์ปดํฌ๋ํธ์ ์ฐจ์ด ๋น๊ต
- ๋ฐ๋ ์์๋ค๋ง DOM์ ๋ฐ์
๋ฆฌ๋ ๋๋ง์ ํ๋ ์ํฉ
- ์์ ์ state ๊ฐ ๋ณ๊ฒฝ
- ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง
- ์์ ์ด ์ ๋ฌ๋ฐ์ props ๊ฐ ๋ณ๊ฒฝ
- ๊ฐ์ ์ ๋ฐ์ดํธ(forceUpdate) ์คํ์
'WEB > REACT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] useEffect (0) | 2021.07.06 |
---|---|
[React] LifeCycle (๋ผ์ดํ์ฌ์ดํด, ์๋ช ์ฃผ๊ธฐ) (0) | 2021.07.05 |
[React] ContextAPI๋ฅผ ์ฌ์ฉํด์ TodoList๋ง๋ค๊ธฐ(2) : contextAPI (0) | 2021.02.09 |
[React] BrowserRouter VS HashRouter (0) | 2021.02.04 |
[React] styled-components (4) | 2021.02.03 |