[ํด๋ผ์ฐ๋ฉ ์ดํ๋ฆฌ์ผ์ด์ ์์ง๋์ด๋ง TIL] 240218 - React ์ค์ ํ๋ก์ ํธ 5, ๋ฆฌ์กํธ ํน๊ฐ
Intro
๊ฐ์ ์ผ๊ธฐ ํ๋ก์ ํธ๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ฉด์ ๊ฐ๋ฐํ ๋ ํํ ๋ฐ์ํ๋ ๋ฒ๊ทธ์ ๋ํด ์๋ ค์ฃผ์ ์ ๋์์ด ๋ง์ด ๋์๋ค.
์ ๋ ์ผ์ ๋๋ฌธ์ ๋ชป๋ค์ ํน๊ฐ๋ ๋ค์ ๋ค์ผ๋ฉฐ ๋ณต์ต๋ ํ๋ค.
์ค๋ ํ์ตํ ๋ด์ฉ
ํํ ๋ฐ์ํ๋ ๋ฒ๊ทธ
- ๋ฐฐ์ด๋ก ์ ๋ฌ๋๋ ๋ฐ์ดํฐ ๋ฆฌ์คํธ์์ ๊ฒน์น๋ ํค๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๊ณ ์ด๋ป๊ฒ ๊ตฌํํ ์ง ๊ณ ๋ฏผํ ํ์๊ฐ ์๋ค.
- ์คํ ์ฒดํฌํ๊ธฐ!! (์คํ๋ฅผ ๋ง์์ฃผ๋ ํ์ ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ถ์ฅ)
- ๋ ์ง ๊ณ์ฐ ์ฒดํฌํ๊ธฐ: ์๊ฐ๊น์ง ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ ํ์ํ๋ค.
์์) ์ํ๋ ๋ฌ์ ๋ง์ง๋ง ๋ ์ ๊ตฌํ ๊ฒฝ์ฐ, 23์ 59๋ถ 59์ด๊น์ง ์ค์ ์ ํด์ผ ๋ฐ์ดํฐ๋ฅผ ๋น ์ง์์ด ๊ฐ์ ธ์ฌ ์ ์๋ค.
const lastDay = new Date(curDate.getFullYear(), curDate.getMonth() + 1, 0, 23, 59, 59).getTime();
React์์ ์ด๋ฏธ์ง ํ์ผ ๋ณด๊ด ๋ฐฉ๋ฒ
: React ์ฑ์์๋ ์ด๋ฏธ์ง ํ์ผ์ ์์น์ ๋ฐ๋ผ ์ต์ ํ ์งํ ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋๋ค.
์ด๋ฏธ์ง๋ public ํด๋ ๋ด ๋๋ src ๋ด์์ ๋ถ๋ฌ์ฌ ์ ์๋๋ฐ, public๋ณด๋ค๋ src ํด๋ ์์ ์๋ ์ด๋ฏธ์ง ํ์ผ์ import ํด ์์ผ ์ต์ ํ ๊ณผ์ ์ ํฌํจ๋๋ค.
import logo from './image/logo.png'
<img src={logo} />
- import๋ก ๋ถ๋ฌ์ ์ฌ์ฉ๋ ์ด๋ฏธ์ง๋ ๋ฒ๋ค๋ง ์ ํฌํจ๋๋ค.
- ์ด๋ ๋ถ๋ฌ์จ ์ด๋ฏธ์ง ํ์ผ์ ์ฌ์ด์ฆ๊ฐ 10000Byte์ดํ๋ฉด Data URL(์ด๋ฏธ์ง ํ์ผ์ Base64 ๋ฐฉ์์ผ๋ก ์ธ์ฝ๋ฉํด ๋์ ๊ฒ์ผ๋ก HTML ๋ด๋ถ์ ์บ์ฑ๋๋ค.) ์ด๋ผ๋ ํ์์ผ๋ก ๋ณํํ๋ค.
- ๋จ, ์ด๋ฏธ์ง๊ฐ ๋ง์ด ์กด์ฌํ๊ฑฐ๋ ๋๋ฌด ํฐ ๊ฒฝ์ฐ์ ๊ฒฝ๋ก๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ๋ ์ข์ ์ ํ์ด ๋ ์ ์๋ค.
State๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ์๋ ์ด์
์๋ฐ์คํฌ๋ฆฝํธ์ ํต์ฌ ๊ฐ๋ ์ค ํ๋์ธ ๋ณ์์ ๋ถ๋ณ์ฑ์ ์ง์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ถ๋ณ์ฑ์ด๋ ๋ณ์๊ฐ ์์ฑ๋ ์ดํ์ ์๋ณธ ๋ฐ์ดํฐ๊ฐ ์์ ๋์ง ์์์ผ ํ๋ ์์น์ด๋ค.
๋ํ, ๋ฆฌ์กํธ์์ ===๋ก State ๋ณ๊ฒฝ์ ํ์ธํ๋๋ฐ ๊ฐ์ฒด State์ ์ฃผ์๊ฐ์ด ๋ฐ๋์ง ์์ผ๋ฉด ๋ณํ๋ฅผ ๊ฐ์งํ์ง ๋ชปํ๋ค.
๋ฆฌ์กํธ์ ๋ ๋๋ง ํ๋ก์ธ์ค
Render Phase โก๏ธ Commit Phase
- Render Phase
- React ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋งํด์ผ ํ๋ UI๋ฅผ Virtual DOM์ด๋ผ๋ ๊ฐ์ฒด ๊ฐ์ผ๋ก ๋ณํํ๋ ๊ณผ์
- ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํด ๊ฒฐ๊ณผ ๊ฐ์ ๊ณ์ฐํ ํ โก๏ธ React Element๋ค์ ๋ชจ์ Virtual DOM์ ์์ฑ
- Commit Phase
- Virtual DOM์ ์ค์ DOM์ ๋ฐ์ํด ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ์๋ก ๊ทธ๋ฆฌ๋ ๊ณผ์
๋ฆฌ์กํธ๋ DOM์ ์์ ์ ์ต์ํํ๊ธฐ ์ํด ์ด๋ฌํ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
๋์์ ๋ฐ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๋ชจ์ ํ ๋ฒ๋ง DOM์ ์์ ํ๊ฒ ๋๋ค. (Reconciliation: ์ฌ์กฐ์ )
โ ๏ธ ๋ฆฌ์กํธ์ ์ด๋ฌํ ๋ ๋๋ง ๊ณผ์ ์ด ํญ์ ์ต๊ณ ์ ์๋๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ ์๋๋ค.
Virtual DOM์ ์์ฑํ๊ณ ๋น๊ตํ๋ ๋ฐ์๋ ์ฐ์ฐ์ด ์์๋๊ธฐ ๋๋ฌธ์..!!
๋ง๋ฌด๋ฆฌ
ํ ์์ผ์ ์งํ๋๋ ๋ฆฌ์กํธ ํน๊ฐ์์ ์ ์ตํ ๋ด์ฉ๋ค์ด ๋ง์์ ์ข์๋ค.
๋ฆฌ์กํธ ๊ด๋ จ ๋ด์ฉ๋ฟ๋ง ์๋๋ผ ๊ณต๋ถํ๋ ๋ฐฉ๋ฒ ๋ฑ ๊ฐ๋ฐ ๊ณต๋ถ์ ๋ฐฉํฅ์ฑ์ ์ก์์ฃผ๋ ค ํ์ ์ ๋ ์ข์๋ค.
