25.06.11 - se5ri/React GitHub Wiki
๐ 02-functionbase ํด๋์ค ์ปดํฌ๋ํธ - ํจ์ํ ์ปดํฌ๋ํธ์ ๊ฐ์ด ์ฌ์ฉ
- ๐ป Functionbase.tsx
๐ 03-lifecycle ํด๋์ค ์ปดํฌ๋ํธ - ์ปดํฌ๋ํธ์ ๋ผ์ดํ ์ฌ์ดํด
- ๐ป ClassBase.tsx
-
Class Component
- constructor์ ํตํ state์ ์ ์,
- setState() ํจ์๋ฅผ ํตํด state ์ ๋ฐ์ดํธ,
- Lifecycle Methods ์ ๊ณต,
-
Function Component
- Lifecycle์ ๋ฐ๋ฅธ ๊ธฐ๋ฅ ๊ตฌํX,
- Hooks ์ ์ฌ์ฉ
๐ 01useState-์ํ๊ด๋ฆฌ
- ๋ฆฌ์กํธ ํ
๊ฐ๋
-
๋ฆฌ์กํธ ํ ์ด๋ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋๋ ๋์์๋ง ์ฌ์ฉํ ์ ์๋ ํน๋ณํ ํจ์
- ์ปดํฌ๋ํธ ์์์๋ง ์ฌ์ฉํ ์ ์๊ณ , ์ปดํฌ๋ํธ ๋ฐ์์๋ ์ฌ์ฉํ ์ ์๋ค.
- ํด๋์ค ์ปดํฌ๋ํธ์์๋ง ๊ฐ๋ฅํ๋ ์ํ ๊ด๋ฆฌ์ ์๋ช ์ฃผ๊ธฐ ์ด๋ฒคํธ๋ฅผ ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค.
- ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ํด๋์ค ์ปดํฌ๋ํธ๋ณด๋ค ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ์ฌ ํ์ฉ๋๊ฐ ๋์์ก๊ณ , ์ผ๋ฐํ๋์๋ค.
-
useState
const [state, setState] = useState(initialState);
-
useEffect
useEffect(setup, dependencies?);
- ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํ ํ
- ํด๋์ค ๊ธฐ๋ฐ ์ปดํฌ๋ํธ์์๋ ์๋ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํด์ ๊ตฌํ
-
componentDidMount()
: ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ์๋ฃ๋๊ณ ๋ธ๋ผ์ฐ์ DOM ํธ๋ฆฌ์ ๋ฐ์๋ ํ ํธ์ถ -
componentDidUpdate()
: ๋ธ๋ผ์ฐ์ DOM ์ ๋ฐ์ดํธ ์๋ฃ ํ ํธ์ถ -
componentWillUnmount()
: ์ปดํฌ๋ํธ๊ฐ ์ญ์ ๋๊ธฐ ์ง์ ์ ํธ์ถ - ...
-
- useEffect ์ ์ฌ์ฉํ๋ฉด ์ธ ๊ฐ์ง ์ฝ๋์ ์์ ์ ๋ง๋ ์์
์ ์ํํ๋ค.
- ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์์
์ธ ๋ถ๊ฐ์ ์ธ ์์
-
ํ์ด๋จธ ์ค์
function ... { ... setTimeout(() => { hello = '200'; console.log(hello); }, 1000) ... return ( ... <h1>{hellol}</h1> ... ); }
- ๋น๋๊ธฐํจ์ setTimeout ์ ๋ณ๊ฒฝ๊ฐ์ ๋ ๋๋ง๋์ง ์๋๋ค.
- useEffect ํ ์ ๋ฐ์์ ์ด๋ฅผ ์ํํ ์ ์๋ค.
-
๋ก๊น
-
- ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์ดํ ์ฒ๋ฆฌํ ์์
- DOM ์๋ ์กฐ์
- side effect๊ฐ ๋ฐ์ํ๋ ์์
(์ปดํฌ๋ํธ๋ฅผ ์์ ํจ์๋ก ์ ์ง)
- ๋ฐ์ดํฐ fetching
- ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์์
์ธ ๋ถ๊ฐ์ ์ธ ์์
-
- ๐ป App.tsx
๐ 02 useEffect - side effect ๊ด๋ฆฌ(๋ฏธ์์ฑ)
-
useEffect
- ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํ ํ
- ํด๋์ค ๊ธฐ๋ฐ ์ปดํฌ๋ํธ์์๋ ์๋ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํด์ ๊ตฌํ
-
componentDidMount()
: ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ์๋ฃ๋๊ณ ๋ธ๋ผ์ฐ์ DOM ํธ๋ฆฌ์ ๋ฐ์๋ ํ ํธ์ถ -
componentDidUpdate()
: ๋ธ๋ผ์ฐ์ DOM ์ ๋ฐ์ดํธ ์๋ฃ ํ ํธ์ถ -
componentWillUnmount()
: ์ปดํฌ๋ํธ๊ฐ ์ญ์ ๋๊ธฐ ์ง์ ์ ํธ์ถ - ...
-
- useEffect์์ ์ฃผ๋ก ๊ตฌํํ๋ ๊ธฐ๋ฅ
- ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์์
์ธ์ ๋ถ๊ฐ์ ์ธ ์์
- ํ์ด๋จธ ์ค์
- ๋ก๊น
- ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์ดํ์ ์ฒ๋ฆฌํ ์์
- DOM ์๋ ์กฐ์
- side effect๊ฐ ๋ฐ์ํ๋ ์์
(์ปดํฌ๋ํธ๋ฅผ ์์ ํจ์๋ก ์ ์ง)
- ๋ฐ์ดํฐ fetching
- ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์์
์ธ์ ๋ถ๊ฐ์ ์ธ ์์
API
useEffect(setup, dependencies?);
๋งค๊ฐ๋ณ์
-
setup
: ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ(1-4), ์ ๋ฐ์ดํธ(2-5), ์ ๊ฑฐ(3-1) ๋ ๋ ํธ์ถ๋๋ ํจ์-
setup
์ด ํจ์๋ฅผ ๋ฆฌํดํ๋ฉด, ๋ฆฌํดํ ํจ์๋ฅผcleanup
์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๋๊ฑฐ๋ ์ธ๋ง์ดํธ ๋ ๋ ํธ์ถ๋จ (cleanup์ด ๋จผ์ ์คํ๋๊ณ setup์ด ๋ค์ ์คํ๋จ)
-
-
dependencies
(์ ํ): ์์กด ๊ฐ์ฒด ๋ฐฐ์ด- ์ปดํฌ๋ํธ๊ฐ ์
๋ฐ์ดํธ๋ ๋
setup
ํจ์๋ฅผ ํธ์ถํ ์ง ๋ง์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋๋ฐ ์ฌ์ฉ - ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ๋๋
dependencies
์ฌ๋ถ์ ์๊ด์์ดsetup
์ด ํธ์ถ๋จ -
dependencies
๋ฅผ ์๋ตํ๋ฉด, ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๋ ๋ ํญ์setup
์ด ํธ์ถ๋จ -
dependencies
์ ๋น ๋ฐฐ์ด์ ์ง์ ํ๋ฉด ์ ๋ฐ์ดํธ์์๋ ํธ์ถ๋์ง ์์ -
dependencies
๋ฅผ ์ง์ ํ๋ฉด, ํด๋น ๊ฐ๋ค์ด ๋ณ๊ฒฝ๋ ๋๋งsetup
ํจ์๊ฐ ํธ์ถ๋จ
- ์ปดํฌ๋ํธ๊ฐ ์
๋ฐ์ดํธ๋ ๋
-
๐ป counter.tsx