Section4 Unit3 [React] ์ฌํ - Virtual DOM๊ณผ React Hooks
๐ Chapter1. React ์ฌํ
• React์ Virtual DOM
React๋ UI์ ์ํ๋ฅผ ์ถ์ ํ๊ณ ๋ณํ๊ฐ ์ผ์ด๋ ์์๋ค์ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธํ ์ ์๋๋ก Virtual DOM์ด๋ผ๋ ๊ฐ์์ DOM ๊ฐ์ฒด๋ฅผ ํ์ฉํ๋ค. ์ด๋ ์ค์ DOM์ ์ฌ๋ณธ ๊ฐ์ ๊ฐ๋ ์ผ๋ก, React๋ ์ค์ DOM ๊ฐ์ฒด์ ์ ๊ทผํ์ฌ ์กฐ์ํ๋ ๋์ ์ด ๊ฐ์์ DOM ๊ฐ์ฒด์ ์ ๊ทผํ์ฌ ๋ณํ ์ ๊ณผ ๋ณํ ํ๋ฅผ ๋น๊ตํ๊ณ ๋ฐ๋ ๋ถ๋ถ์ ์ ์ฉํ๋ค.
๐ Chapter2. React Hooks
• ๋ ๋๋ง ์ต์ ํ๋ฅผ ์ํ Hook์ผ๋ก useMemo
์ uesCallback
์ด ์๋ค.
→ useMemo๋ ๊ฐ์ ์ฌ์ฌ์ฉ์ ์ํด ์ฌ์ฉํ๋ Hook์ด๋ผ๋ฉด, useCallback์ ํจ์์ ์ฌ์ฌ์ฉ์ ์ํด ์ฌ์ฉํ๋ Hook
→ useMemo๋ ๊ณ์ฐ ๋น์ฉ์ด ๋์ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ์บ์(์ ์ฅ)ํด์ ์ฌ์ฌ์ฉํ๋๋ฐ ์ฌ์ฉํ๊ณ , ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํ๋ค. ์ฆ, ๋ณต์กํ ๊ณ์ฐ ๊ฒฐ๊ณผ ๊ฐ์ ๊ฒ๋ค์ ์บ์ ํด์ ํ์ํ ๋๋ง๋ค ๊บผ๋ด ์ฐ๋ ๋ฐ์ ์ ์ฉํ๋ค.
→ useCallback์ ํจ์ ์์ฒด๋ฅผ ์บ์ํด์ ์ฌ์ฌ์ฉํ๋ ๋ฐ์ ์ฌ์ฉํ๋ฉฐ, ํจ์๋ฅผ ๋ฐํํ๋ค. ํจ์๋ฅผ ์บ์ํด์ ์์ ์ปดํฌ๋ํธํํ props ๊ฐ์ผ๋ก ์ ๋ฌํ๋ ๋ฐ์ ์ ์ฉํ๋ค.
→ ๋ ๋ค ์ข ์์ฑ ๋ฐฐ์ด์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ณ , ํด๋น ์ข ์์ฑ ๋ฐฐ์ด ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋ ์ด์ ์ด์ ๊ฒฐ๊ณผ/ํจ์๋ฅผ ์ฌ์ฌ์ฉํ๋ค.
• Custom Hook
custom hook์ ์ฌ์ฉํ๋ฉด,
1. ์ํ๊ด๋ฆฌ ๋ก์ง์ ์ฌํ์ฉ์ด ๊ฐ๋ฅํ๊ณ ,
2. ํด๋์ค ์ปดํฌ๋ํธ๋ณด๋ค ์ ์ ์์ ์ฝ๋๋ก ๋์ผํ ๋ก์ง์ ๊ตฌํํ ์ ์์ผ๋ฉฐ,
3. ํจ์ํ์ผ๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ณด๋ค ๋ช ๋ฃํ๋ค (e.g. useSomething)
custom hook ์ ์ ๊ท์น
1. Custom Hook์ ์ ์ํ ๋๋ ํจ์ ์ด๋ฆ ์์ use๋ฅผ ๋ถ์ธ๋ค.
2. ๋๊ฐ์ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋ด์ hooks ๋๋ ํ ๋ฆฌ์ Custom Hook์ ์์นํ๋ค.
3. Custom Hook์ return ๊ฐ์ ์กฐ๊ฑด๋ถ์ฌ์๋ ์๋๋ค.
custom hook์ด ๊ฐ์ง๊ณ ์๋ state์ Effect๋ custom hook์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๋ง๋ค ๋ ๋ฆฝ์ ์ด๋ค. ๋, ํ ์ปดํฌ๋ํธ์ ์ปค์คํ ํ ์ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํด๋ ๋ ๋ฆฝ์ ์ธ state์ effect๊ฐ ์ฌ๋ฌ๊ฐ ์์ฑ๋๋ค.
๐ ์ค๋์ ํ๊ณ
๋๋์ด React ์ฌํ ์ฑํฐ์ ๋ค์ด๊ฐ๋ค.
์ง๋ 5์ผ๊ฐ์ ์๋ก ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ, ์ด๋ ต์ง ์์ ๋ณด์ฌ์ ์๊ฐ ์์ ๋ค ๊ตฌํํ ์ ์์ ์ค ์์๋ ๊ธฐ๋ฅ๋ค์ด ์ฌ์ค ๊ตฌํํ๊ธฐ ๊ฝค ๊น๋ค๋กญ๊ณ ์ด๋ ต๋ค๋ ๊ฒ์ ๋๋ผ๊ณ ๋ ์ด๋ ๊ฒ ์ ๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ ์ด๋ ๋ง ์๊ฐ์ด ํ๋ฌ๋ฒ๋ ธ๋ค. ์ฌ๋ฌ๊ฐ์ง ๊ณ ๋ฏผ์ ํ๋ฉฐ ๋ง๋ค์๋๋ฐ๋, ๋ ๋ง์ ๊ณ ๋ฏผ์ ํด์ผ ํ๋ค๋ ๐ฅฒ
์ด๋ฒ ๋ฆฌ์กํธ ์ฌํ ์ฑํฐ๋ ์๋ก ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ๋ถ๋ชํ๋ ๋ฌธ์ ๋ค์ ์กฐ๊ธ์ด๋๋ง ํด๊ฒฐํ ์ค๋ง๋ฆฌ๋ฅผ ์ค ์ ์์ง ์์๊น, ๋ผ๋ ์๊ฐ์ ๋ฐ๊ฐ์ ๋ค. ์๋ก ํ๋ก์ ํธ์ ์ด๋ฒ ์ ๋์์ ํ์ตํ๊ฒ ๋ custom hook๋ ์ฌ์ฉํ์๊ณ , useCallback ํจ์๋ ์ฌ์ฉํ๋ ํฐ๋ผ(์ด๊ฑด ์๊ณ ์ด๊ฑด ์๋๋ผ์..) ์ข ๋ ๋ฐฐ์ฐ๊ณ ์ถ์ ๋ถ๋ถ์ด์๋๋ฐ ๋ง์นจ ์ค๋ ํ์ต์ ํ ์ ์์๋ค. ํ๋ก์ ํธ ๋ด ์ฌ๊ธฐ์ ๊ธฐ์ ๋ฆฌ๋ ๋๋ง์ด ๋๋ ํฌ์ธํธ๋ค์ด ๋๋ฌด ๋ง์์ ๊ทธ ๋ถ๋ถ๋ ๊ณ ๋ฏผ์ ํ์๋๋ฐ, ๋ฉ๋ชจ์ด์ ์ด์ ์ ํ์ฉํด ๊ฐ์ ํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ๋ ๋ค์๋ค.
์ด๋ฒ์ฃผ์๋ ์ฐ์ ์ง๋๋ฅผ ๋ฐ๋ผ๊ฐ๊ณ , ์ฃผ๋ง์ ์๋ก ํ๋ก์ ํธ๋ฅผ ์ข ๋ ๋ค๋ฌ์ด ๋ด์ผ๊ฒ ๋ค..!
'Frontend Dev > ๐ฅ ์ฝ๋์คํ ์ด์ธ FE ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section4 Unit3 [React] ์ฌํ - React Hooks ์ ์ฉํ๊ธฐ (0) | 2023.07.20 |
---|---|
Section4 Unit3 [React] ์ฌํ - ์ฝ๋๋ถํ ๊ณผ React.lazy() & Suspense (0) | 2023.07.20 |
Section4 Unit2 [์๋ก ํ๋ก์ ํธ] COZ Shopping (0) | 2023.07.11 |
Section4 Unit1 [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] ๊ธฐ์ด - Tree, Graph (0) | 2023.07.10 |
Section4 Unit1 [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] ๊ธฐ์ด - Stack, Queue (0) | 2023.07.07 |