React
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. (์ต๊ทผ์๋ ์ฃผ๋ก TypeScript๋ก ๊ตฌํ)
Web์๋ง ์๋ ๊ฒ์ ์๋๋ฉฐ ๋ชจ๋ฐ์ผ์์๋ React Navive, ๊ฐ์ App์์๋ React 360 ๋ฑ์ด ์ฌ์ฉ๋๋ค๊ณ ํฉ๋๋ค.
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ฌ DOM์ ์ํ๊ฐ ๋ฐ๋์์ ๋, ํน์ DOM์ ์ ๋ฐ์ดํธํ๊ธฐ๋ณด๋ค๋
์ฒ์๋ถํฐ ๋ค์ ํ๋ฉด์ ๊ทธ๋ฆผ์ผ๋ก์จ, ์ ๋ฐ์ดํธํ ๋ ๋ณต์กํ ๋ก์ง ๋ฑ ๊ณ ๋ฏผํ ๊ฒ์ด ์ฌ๋ผ์ง๊ฒ ๋์ต๋๋ค.
๋์ ํ๋ฉด์ ์ ๋ถ ์๋ก ๊ทธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๊ต์ฅํ ๋๋ฆด ๊ฒ์ผ๋ก ์์๋๋ฉฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ DOM (Virual DOM)์ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฐ์ DOM
์ค์ ๋ณด์ด๋ DOM์ด ์๋๋ผ
๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์์ผ๋ก ์กด์ฌํ๋ DOM์ผ๋ก JS๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ค์ ๋ธ๋ผ์ฐ์ ๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค.
state์ํ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋๋ฉด, ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๊ณณ์ UI๋ฅผ ๊ฐ์ DOM์ ํตํด ๋ ๋๋ง ํ ์ค์ ๋ธ๋ผ์ฐ์ ์ DOM๊ณผ ๋น๊ตํ์ฌ ์ ๋ฐ์ดํธํ๊ฒ ๋ฉ๋๋ค.
๋์ ์๋ฆฌ
์ค์ ๋ก ๋ฆฌ์กํธ๋ 2๊ฐ์ ๊ฐ์๋์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ ๋ ๋๋ง ์ด์ ์ ํ๋ฉด ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ๋
๋ ๋ฒ์งธ๋ ๋ ๋๋ง ์ดํ์ ๋ณด์ด๊ฒ ํด์ฃผ๋ ๊ฐ์ ๋
๋ฆฌ์กํธ๋ ๋ํ์ ์ผ๋ก state๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ฆฌ๋ ๋๋ง ํ๊ฒ ๋๋๋ฐ, ์ด ์์ ์์ ์๋ก์ด ๊ฐ์๋์ด ์์ฑ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ ์ฒซ ๋ฒ์งธ ๊ฐ์๋๊ณผ ๋ ๋ฒ์งธ ๊ฐ์๋์ ๋น๊ตํ์ฌ ๋ณํ Element๋ฅผ ํ์ธํ๊ณ (Diffing), ์ฐจ์ด๊ฐ ๋ฐ์ํ ๋ถ๋ถ๋ง ์ค์ DOM์ ์ ์ฉํ๊ฒ ๋ฉ๋๋ค.(Reconciliation)
์ฌ๊ธฐ์ state๊ฐ ๋ณํ ๋ ๋ง๋ค ์ ๋ฐ์ดํธ ๋๋ ๊ฒ์ ์๋๊ณ ,
Batch ๋ผ๊ณ ํด์ ๋ฐ๋ ๊ฒ๋ค์ ๋ชจ์์ ํ ๋ฒ์ ๊ทธ๋ ค์ฃผ๊ฒ ๋ฉ๋๋ค.
(Batch๋, ์ฌ๋ฌ๊ฐ์ state ์ ๋ฐ์ดํธ๋ฅผ ํ๋์ ๋ฆฌ๋ ๋๋ง์ผ๋ก ๋ฌถ์. 16ms๋ฅผ ์ฃผ๊ธฐ๋ก ๋์ํ๋ค๊ณ ํจ.)
DOM์ ๋ฐ์ดํธ๋ฅผ ์ข ๋ ํธํ๊ฒ ํ๊ธฐ ์ํด, ์ ์ฒด์ ์ธ ํ๋ฉด์ ๋ค์ ๋ ๋ํจ์ผ๋ก์จ ๋ณต์กํจ ํด๊ฒฐํ๋ค๊ณ ํฉ๋๋ค.
์ด๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ์ ์ธ ์ฑ๋ฅ ์ ํ๋ ์ํฉ์์ ๊ฐ์ DOM์ ํตํด ์ค์ DOM๊ณผ ๋น๊ต ํ,
ํ์ํ ๋ถ๋ถ๋ง ํ๋ฉด์ ๋ค์ ๊ทธ๋ฆผ์ผ๋ก์ ์๋๋ฌธ์ ํด๊ฒฐํ๊ฒ ๋ฉ๋๋ค.
'Front-End > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React] Hook (0) | 2023.06.20 |
---|---|
React] Hook : useState (1) | 2023.06.06 |
React] Hook : props (1) | 2023.06.06 |
React] Import & export (0) | 2023.06.06 |
React] Component & JSX (0) | 2023.06.04 |