๐ง ๋ผ์ดํ ์ฌ์ดํด์ด๋?
React๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๊ฐ๋ฐ์ ๊ฐ๋ฅ์ผํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ์ฌ view์ ๋ถ๋ถ ๋ถ๋ถ์ ๊ตฌ์ฑํ ์ ์๋๋ฐ ์ด ์ปดํฌ๋ํธ์๋ view์ ๋๋๋ง๋๊ธฐ ์ ์ค๋น ๊ณผ์ ๋ถํฐ ์ฌ๋ผ์ง ๋๊น์ง์ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ์ง๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ผ์ดํ์ฌ์ดํด์ ๋ค๋ฃจ๋ฉฐ ์ฌ์ฉ์๊ฐ ์ํ๋ view๋ฅผ ๋ณด์ฌ์ค๋ค.
๋ผ์ดํ ์ฌ์ดํด์ ํฌ๊ฒ ๋ง์ดํธ, ์ ๋ฐ์ดํธ, ์ธ๋ง์ดํธ ์ธ๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๋ค.
1. ๋ง์ดํธ
DOM์ด ์์ฑ๋๊ณ ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๋ ๊ฒ์ ๋ง์ดํธ(mount)๋ผ๊ณ ํ๋ค.
2. ์ ๋ฐ์ดํธ
๋ค์๊ณผ ๊ฐ์ ๋ค๊ฐ์ง์ ๊ฒฝ์ฐ์ ์ปดํฌ๋ํธ๋ฅผ ์ ๋ฐ์ดํธ๋ฅผ ํ๋ค.
- props์ ๋ณ๊ฒฝ
- state์ ๋ณ๊ฒฝ
- ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง
- this.forceUpdate๋ก ๊ฐ์ ๋ ๋๋ง ํธ๋ฆฌ๊ฑฐ
3. ์ธ๋ง์ดํธ
์ปดํฌ๋ํธ๋ฅผ DOM์์ ์ ๊ฑฐํ๋ ๊ฒ์ ์ธ๋ง์ดํธ(unmount)๋ผ๊ณ ํ๋ค.
๐ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋
์ปดํฌ๋ํธ์ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋๋ฐ ์ด๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ํจ์ํ์์๋ useEffect๋ฑ Hook์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ๋ค.
๋ฆฌ์กํธ์์ ํด๋์คํ ์ปดํฌ๋ํธ์ ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ ๋ฉ์๋์๋ ์ด 9๊ฐ์ง๊ฐ ์๋๋ฐ ๋ฉ์๋ ๋ช ์ ๋ฐ๋ผ ๋๊ฐ์ง ํ์ ์ผ๋ก ๋๋ ์ ์๋ค.
- Will ์ ๋์ฌ๊ฐ ๋ถ์ ๋ฉ์๋: ์ด๋ค ์์ ์ ์๋ํ๊ธฐ ์ ์ ์คํ
- Did ์ ๋์ฌ๊ฐ ๋ถ์ ๋ฉ์๋: ์ด๋ค ์์ ์ ์๋ํ ํ ์คํ
render() | ์ปดํฌ๋ํธ์ ๋ชจ์์๋ฅผ ์ ์ํ๋ค. this.props, this.state์ ์ ๊ทผ ๊ฐ๋ฅํ๊ณ ๋ฆฌ์กํธ ์์๋ฅผ ๋ฐํํ๋ค. |
constructor ๋ฉ์๋ | ์ปดํฌ๋ํธ์ ์์ฑ์ ๋ฉ์๋๋ก ์ฒ์ ์คํ๋๊ณ ์ด๊ธฐ state๋ฅผ ์ ์ํ๋ค. |
getDerivedStateFromProps ๋ฉ์๋ | props๋ก ๋ฐ์ ์จ ๊ฐ์ state์ ๋๊ธฐํ์ํค๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค. |
componentDidMount ๋ฉ์๋ | ๋๋๋ง ์ดํ, ๋ด๋ถ์์ ํจ์ํธ์ถ, ์ด๋ฒคํธ ๋ฑ๋ก, ๋คํธ์ํฌ ์์ฒญ ๋ฑ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ค. |
shouldComponenetUpdate ๋ฉ์๋ | props ๋๋ state๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ๋ฆฌ๋ ๋๋ง์ ํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค. |
getSnapshotBeforeUpdate ๋ฉ์๋ | ์ ๋ฐ์ดํธ ์ง์ ์ ๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ํด ํธ์ถ๋๋ค. |
componentDidUpdate ๋ฉ์๋ | ๋ฆฌ๋๋๋ง ์ดํ, DOM ๊ด๋ จ ์์ ์ ํ ์ ์๋ค. ๋ํ ์ด์ ์ ๋ฐ์ดํฐ์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค. |
componentWillUnmount ๋ฉ์๋ | ์ปดํฌ๋ํธ๋ฅผ DOM์์ ์ ๊ฑฐํ๋ค. |
componentDidCatch ๋ฉ์๋ | ์ปดํฌ๋ํธ ๋๋๋ง ๋์ค ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ์ค๋ฅUI๋ฅผ ๋ณด์ฌ์ค๋ค. |
๊ฐ ๋ฉ์๋๊ฐ ์ฌ์ฉ๋๋ ์๊ธฐ ๋ฐ ๋จ๊ณ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ปดํฌ๋ํธ๊ฐ ์์ฑ ๋ ๋(๋ง์ดํธ)
1. constructor : ํด๋์ค ์์ฑ์ ๋ฉ์๋
2. getDerivedStateFromProps : props์ ์๋ ๊ฐ์ state์ ๋ฃ์ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋
3. render : ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ ๋ฉ์๋
4.componentDidMount : ์ปดํฌ๋ํธ๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์ ๋ํ๋ ํ ํธ์ถํ๋ ๋ฉ์๋๋ก DOM๊ด๋ จ ์์ , ๋น๋๊ธฐ ์์ ์ ์ํํ๋ค.
์ปดํฌ๋ํธ๋ฅผ ์ ๋ฐ์ดํธ ํ ๋ (์ ๋ฐ์ดํธ)
1. getDerivedStateFromProps : ์ปดํฌ๋ํธ์ props๋ state๊ฐ ๋ณ๊ฒฝ๋์ ๋๋ ํธ์ถ๋๋ ๋ฉ์๋
2. shouldComponentUpdate : ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฉ์๋
3. render : ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ ๋ฉ์๋
4. getSnapshotBeforeUpdate : ์ปดํฌ๋ํธ์ ๋ณํ๋ฅผ DOM์ ๋ฐ์ํ๊ธฐ ์ง์ ์ ํธ์ถํ๋ ๋ฉ์๋๋ก ๋ณ๊ฒฝ๋๊ธฐ ์ด์ ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค.
5. componentDidUpdate : ์ปดํฌ๋ํธ์ ์ ๋ฐ์ดํธ ์์ ์ด ๋๋ ๋ค์ ํธ์ถ๋๋ ๋ฉ์๋
์ปดํฌ๋ํธ๋ฅผ ์ ๊ฑฐ ํ ๋ (์ธ๋ง์ดํธ)
1. componentWillUnmount : ์ปดํฌ๋ํธ๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ฌ๋ผ์ง๊ธฐ ์ ์ ํธ์ถ๋๋ ๋ฉ์๋๋ก ์ฃผ๋ก DOM์ ์ง์ ๋ฑ๋กํ๋ ์ด๋ฒคํธ๋ฅผ ์ ๊ฑฐํ๋ ๋ฑ์ ์์ ์ ํ๋ค.
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ๋ฆฌ์กํธ ์์คํ์ค?! (React Suspense) (0) | 2023.04.27 |
---|---|
[React] ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ง๋ณด๊ธฐ (0) | 2023.03.02 |
[React] setState callBack ํจ์ (0) | 2022.12.23 |
[React] Lazy initialization (0) | 2022.12.22 |