๐๋ผ์ดํ์ฌ์ดํด
React ์ปดํฌ๋ํธ๋ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ์ง๋ค. ๋ผ์ดํ์ฌ์ดํด์ ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ ์๋ฉธ๋๊ธฐ๊น์ง์ ์ผ๋ จ์ ๊ณผ์ ์ ๋งํ๋ค. ๋ผ์ดํ์ฌ์ดํด ์์์๋ ๊ฐ ์์ ์ ์๋์ผ๋ก ํธ์ถ๋๋ ํจ์๊ฐ ์๋๋ฐ ์ด๋ฅผ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ผ๊ณ ํ๋ค.
๐Mount > Update, Re-render > Unmount
โ๏ธMount
DOM์ด ์์ฑ๋๊ณ ์น ๋ธ๋ผ์ฐ์ ์(ํ๋ฉด)์ ๋ํ๋จ. Mount ์์๋ ๋ค์์ ๋ฉ์๋๋ค์ด ์ฐจ๋ก๋๋ก ํธ์ถ๋๋ค.
- constructor: ์ปดํฌ๋ํธ๋ฅผ ์๋ก ๋ง๋ค๋๋ง๋ค ํธ์ถ๋๋ ํด๋์ค ์์ฑ์ ๋ฉ์๋
- getDerivedStateFromProps: props์ ์๋ ๊ฐ์ state์ ๋ฃ์ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋
- render: UI๋ฅผ ๋ ๋๋ง ํ๋ ๋ฉ์๋
- componentDidMount: ์ปดํฌ๋ํธ๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์ ๋ํ๋ ํ ํธ์ถํ๋ ๋ฉ์๋ ⇒ ์ฆ, ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ์งํ/DOM์ ์ฝ์ ๋ ์งํ์ ํธ์ถ๋๋ค. ์ด ์์ ์ ๋คํธ์ํฌ ์์ฒญ์ ๋ณด๋ด๊ฑฐ๋, ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์๋ค. ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ํ๋ ํ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ฑฐ๋, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด๊ธฐํํ๋๋ฐ ์์ฃผ ์ฌ์ฉ๋๋ค.
โ๏ธUpdate, Re-render
์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- props๊ฐ ๋ฐ๋ ๋
- state๊ฐ ๋ฐ๋ ๋
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋ ๋
- this.forceUpdate๋ก ๊ฐ์ ๋ก ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํ ๋
โ๏ธUnmount
์ปดํฌ๋ํธ์ ์๋ฉธ
- componentWillUnmount: ์ปดํฌ๋ํธ๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์์ ์ฌ๋ผ์ง๊ธฐ ์ ์ ํธ์ถํ๋ ๋ฉ์๋
๐ํด๋์คํ ์ปดํฌ๋ํธ์ ํจ์ํ ์ปดํฌ๋ํธ
๐ํด๋์คํ ์ปดํฌ๋ํธ
- ๊ณผ๊ฑฐ์ ๋ฐฉ์
- Component๋ฅผ ์์๋ฐ์์ผ ํ๋ค.
- render() ๋ฉ์๋๊ฐ ๋ฐ๋์ ํ์ํ๋ค.
- state, lifeCycle ๊ด๋ จ ๊ธฐ๋ฅ์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ⇒ 16.8๋ฒ์ ๋ถํฐ๋ Hook์ ํตํด ํจ์ํ ์ปดํฌ๋ํธ์์๋ lifeCycle ๊ด๋ จ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์์์ ํจ์ํ ์ปดํฌ๋ํธ๋ณด๋ค ์กฐ๊ธ ๋ ์ฌ์ฉํ๋ค.
import React, {Component} from 'react';
class App extends Component{
render(){
const text = 'Hi';
return <div>{text}</div>
}
}
export default App;
๐ํจ์ํ ์ปดํฌ๋ํธ
์์ ๋์ผํ ์ฝ๋๋ฅผ ํจ์ํ ์ปดํฌ๋ํธ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. (ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ํจ์ฌ ์ฝ๋๊ฐ ๊ฐ๋ ์ฑ์ด ์ข๊ณ ๊ฐ๊ฒฐํ๋ค.)
import React from 'react';
const App = () => {
const text = 'Hi';
return <div>{text}</div>
}
export default App;
์์ ๋งํ๋ฏ 16.8๋ฒ์ ๋ถํฐ๋ Hook์ ํตํด ํจ์ํ ์ปดํฌ๋ํธ์์๋ lifeCycle ๊ด๋ จ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
*Mount & Unmount
import React from 'react';
const App = () => {
const text = 'Hi';
return <div>{text}</div>
}
export default App;
*Re-render
useEffect(() => {
// ์
๋ฐ์ดํธ ๋จ๊ณ ์คํ ์ฝ๋
}, [count]);
'๐CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Access Token๊ณผ Refresh Token์ ์ ์ฅ ์์น (1) | 2024.10.28 |
---|---|
์ด์์ฒด์ (0) | 2024.07.10 |
React์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (0) | 2024.04.19 |
www.naver.com์ ์ฃผ์์ฐฝ์ ์ ๋ ฅํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? (0) | 2024.04.14 |
AJAX: SSR๊ณผ CSR (2) | 2024.03.17 |