์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Gatsby
- REACT
- ์๊ณ ๋ฆฌ์ฆ
- useRef
- ๋ฐ๋ธ์ฝ์ค
- CSS
- position
- history api
- Flex
- float
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋ก ํธ์๋
- fetch API
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- Props
- ๋ธ๋ก๊ทธ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ฝ๋ฉํ ์คํธ
- useEffect
- Today
- Total
Daehyunii's Dev-blog
์ปดํฌ๋ํธ์ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋ ๋ณธ๋ฌธ
์ปดํฌ๋ํธ์ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋
Daehyunii 2022. 12. 23. 02:44๋ฆฌ์กํธ ๋ผ์ดํ์ฌ์ดํด?
๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ์ด๋ค.
์ฝ๊ฒ ๋งํด, ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ ์๋ฉธ๋๋ ์ด๋ จ์ ๊ณผ์ ์ ๋ผ์ดํ ์ฌ์ดํด์ด๋ผ๊ณ ํ๋ค. ์ฐธ๊ณ ๋ก ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ ์ ์๋ค. ํจ์ ์ปดํฌ๋ํธ์์๋ Hooks ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋น์ทํ ์์ ์ ์ฒ๋ฆฌํ ์๋ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์กํธ๋ฅผ ์์ฑํ ๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ฏ๋ก '์ด๋ฐ ๊ฒ๋ค์ด ์๊ตฌ๋'ํ๊ณ ๋๋ผ๊ณ ํจ์ ์ปดํฌ๋ํธ์์๋ ์ด๋ฅผ ์ด๋ป๊ฒ ๋น์ทํ๊ฒ Hooks๋ก ๋ง๋ค์๋์ง ๋น๊ตํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ์ค๋์ classํ ์ปดํฌ๋ํธ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ค์ ๋ํด์๋ง ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ๋ค.
์ฐ์ ๋ผ์ดํ์ฌ์ดํด์ ์ด ์ธ ๊ฐ์ง ๊ธฐ์ค์ผ๋ก ๋๋ ๋ณผ ์ ์๋ค.
1. ๋ง์ดํธ
DOM์ด ์์ฑ๋๊ณ ์น ๋ธ๋ผ์ฐ์ ์์ ๋ํ๋ ๋๋ฅผ ์๋ฏธํ๋ค.
2. ์ ๋ฐ์ดํธ
๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค. ์ ๋ฐ์ดํธ๊ฐ ์ด๋ค์ง๋ ๋ฆฌ์กํธ์์ 4๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋ค.
- props๊ฐ ๋ฐ๋ ๋
- state๊ฐ ๋ฐ๋ ๋
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋ ๋
- this.forceUpdate๋ก ๊ฐ์ ๋ก ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํ ๋
์ด๋ ๊ฒ 4๊ฐ์ง ๊ฒฝ์ฐ์ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ค์ง๋ค.
3. ์ธ๋ง์ดํธ
์ปดํฌ๋ํธ๋ฅผ DOM์์ ์ ๊ฑฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ ๊ฐ๊ฐ์ ํ์๊ฐ ์ผ์ด๋๋ ์๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํธ์ถํ ์ ์๋ ๋ฉ์๋๋ค์ด ์กด์ฌํ๋ค. ์ฐ์ ํฐ ๊ทธ๋ฆผ์ ํตํด ์ ์ฒด์ ์ธ ํ๋ฆผ์ ์์๋ณด์.

๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์์ ํ๋ฆ์ ํด๋นํ๋ ์๊ธฐ์ ํด๋น ๋ฉ์๋๊ฐ ํธ์ถ๋๊ฒ ๋๋ค. ๋ง์ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ค์ด ์กด์ฌํ์ง๋ง ๊ทธ ์ค์์๋ ๋ง์ด ์ฌ์ฉํ๊ณ ์ค์ํ ๋ฉ์๋๋ค์ด๋ผ๊ณ ์๊ฐ๋๋ ๋ช ๊ฐ์ง ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
(render ๋ฉ์๋, constructor ๋ฉ์๋๋ ์๋ตํ๋๋ก ํ๊ฒ ๋ค.)
1. componentDidMount ๋ฉ์๋
์ด๊ฒ์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ ์ฒซ ๋ ๋๋ง์ ๋ค ๋ง์น ํ ์คํ๋๋ค. ์ด ์์์๋ ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ ํน์ ํจ์๋ฅผ ํธ์ถํ๊ฑฐ๋ ์ด๋ฒคํธ ๋ฑ๋ก, setTimeout, setInterval, ๋คํธ์ํฌ ์์ฒญ๊ณผ ๊ฐ์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
2. componentDidUpadate(prevProps, prevState, snapshot) ๋ฉ์๋
์ด๊ฒ์ ๋ ๋๋ง์ ์๋ฃํ ํ ์คํํ๋ค. ์ธ์๋ก๋ prevProps, prevState, snapshot์ ์ธ์๋ก ๋ฐ์ผ๋ฉด ๋จ์ด์ ์๋ฏธ๋๋ก ์ด์ props์ ์ด์ state๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด ์ด์ ์ ๊ฐ์ก๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค. snapshot์ getSnapshotBeforeUpdate์์ ๋ฐํํ ๊ฐ์ด ์๋ค๋ฉด ์ฌ๊ธฐ์ snapshot ๊ฐ์ ์ ๋ฌ๋ฐ์ ์ ์๋ค.
3. componentWillUnmount ๋ฉ์๋
์ด๊ฒ์ ์ปดํฌ๋ํธ๋ฅผ DOm์์ ์ ๊ฑฐ๋๊ธฐ ์ง์ ์ ์คํ๋๋ค. ์ด๋ ๋ฑ๋กํ ์ด๋ฒคํธ, ํ์ด๋จธ๊ฐ ์๋ค๋ฉด ์ฌ๊ธฐ์ ์ ๊ฑฐ ์์ ์ ํด์ผ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
4. shouldComponentUpdate(nextProps, nextState) ๋ฉ์๋
์ด๊ฒ์ props ๋๋ state๋ฅผ ๋ณ๊ฒฝํ์ ๋, ๋ฆฌ๋ ๋๋ง์ ์์ํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ฉ์๋๋ก ๋ฉ์๋๋ true ๋๋ false๊ฐ์ ๋ฐํํด์ผ ํ๋ค. ๋ง์ฝ ๋ฐ๋ก ์ค์ ํ์ง ์๋๋ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ ๋ true ๊ฐ์ ๋ฐํํ๋ค. ๋ฉ์๋๋ฅผ ์ค์ ํ์ฌ false๊ฐ์ ๋ฐํํ๋ฉด ์ ๋ฐ์ดํธ ๊ณผ์ ์ ์ค์งํ๋ค.
์ธ์๋ก ์ ๋ฌ๋๋ nextProps๋ nextState๋ฅผ ํตํด ํ์ฌ ์ํ์ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ณํ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ true๋ฅผ ์๋ ๊ฒฝ์ฐ์๋ false๋ฅผ ๋ฐํํ๊ฒ ํด์ฃผ๋ฉด ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ๊ฒ ๋๋ค. ์ด๋ฅผ ํตํด ์ต์ ํ๋ฅผ ํ ์ ์๋ค.
์ง๊ธ๊น์ง ๋ํ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ class ์ปดํฌ๋ํธ์ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ค์ ๋ํด์ ์์๋ณด์๋ค. ๋ด์ฉ์ ์ธ์ธํ๊ฒ ์๊ณ ์ธ์ฐ๋ ๋๋๋ณด๋ค๋ ์ด๋ฐ๊ฒ ์๋ค ์ ๋๋ก ์์๋๋ฉด ๋์์ด ๋ ๊ฒ ๊ฐ๋ค.(์ง๊ธ ์ธ์๋ ์ด์ฐจํผ,,,๊น๋จน๋๋ค...๐)
'๐ Language & CS knowledge > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ปดํฌ๋ํธ ๋ฐ๋ณต (0) | 2022.12.23 |
---|---|
์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์ vs filter( ) ๋ฉ์๋ ์ฝ๋ ๊ฐ๋ ์ฑ ๋น๊ต (0) | 2022.12.22 |
ํ์ด์ง์์ ํด๋ฆญ์ ๋ฐ์ดํฐ ๋ณต์ฌํ๊ธฐ (0) | 2022.12.22 |
ref: DOM์ ์ด๋ฆ ๋ฌ๊ธฐ (0) | 2022.12.22 |
์ด๋ฒคํธ ํธ๋ค๋ง (0) | 2022.12.22 |