Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- BFS์ DFS
- Lifting state
- Cmarket
- ๊ณ ์ฐจํจ์
- props drilling
- html
- jsx
- ์คํ ์ด์ธ ์ฝ๋
- fetch api
- css
- ํผํฐ ๋ชจ๋น
- ์๋งจํฑ์์
- Study
- Effect Hook
- State
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- WEB
- prototype
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฒ๋ค๋ง
- JavaScript
- git
- css animation
- wai-aria
- ๋ฒ์ง ๋ชจํ
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ํ ์คํธ ์์
- ์ปดํจํฐ ๊ณตํ
- ์ ์ด์ฝฅ ๋์จ
- React
Archives
- Today
- Total
roqkf
[React] Effect Hook ๋ณธ๋ฌธ

Side Effect
- ํจ์ ๋ด์์ ์ด๋ค ๊ตฌํ์ด ํจ์ ์ธ๋ถ์ ์ํฅ์ ๋ผ์น๋ ๊ฒฝ์ฐ ํด๋น ํจ์๋ Side Effect๊ฐ ์๋ค๊ณ ์ด์ผ๊ธฐํ๋ค. React์์๋ ์ปดํฌ๋ํธ ๋ด์์ fetch๋ฅผ ์ฌ์ฉํด API๋ฅผ ๊ฐ์ง๊ณ ์ค๊ฑฐ๋ ์ด๋ฒคํธ๋ฅผ ํ์ฉํด DOM์ ์ง์ ์กฐ์ํ ๋ Side Effect๊ฐ ๋ฐ์ํ๋ค๊ณ ๋งํ๋ค.
์ ์ญ ๋ณ์ foo๋ฅผ bar๋ผ๋ ํจ์๊ฐ ์์ ํ๋ ์์
let foo = 'hello';
function bar() {
foo = 'world';
}
bar(); // bar๋ Side Effect๋ฅผ ๋ฐ์์ํต๋๋ค!
์์ ๊ฐ์ ์์ ์์๋ bar๋ผ๋ ํจ์ ๋ด์์ ํจ์ ์ธ๋ถ์ ์๋ foo๋ผ๋ ์ ์ญ๋ณ์์ ์ํฅ์ ๋ผ์น๊ณ ์๊ธฐ ๋๋ฌธ์ Side Effect๊ฐ ์๋ค๊ณ ํ ์ ์๋ค.
Pure Function
- ์์ ํจ์๋, ์ค์ง ํจ์์ ์ ๋ ฅ๋ง์ด ํจ์์ ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ๋ ํจ์๋ฅผ ์๋ฏธํ๋ค. ํจ์์ ์ ๋ ฅ์ด ์๋ ๋ค๋ฅธ ๊ฐ์ ํจ์์ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒฝ์ฐ์๋ ์์ ํจ์๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ ์ ๋ ฅ์ผ๋ก ์ ๋ฌ๋ ๊ฐ์ ์์ ํ์ง ์๋๋ค. ์ ๋ฌ ์ธ์๊ฐ ์ฃผ์ด์ง ๊ฒฝ์ฐ์ ํญ์ ๋๊ฐ์ ๊ฐ์ด ๋ฆฌํด๋๋ค.
Immutableํ ๋ฉ์๋ ์ด์ฉํ ์์
function upper(str) {
return str.toUpperCase(); // toUpperCase ๋ฉ์๋๋ ์๋ณธ์ ์์ ํ์ง ์์ต๋๋ค (Immutable)
}
upper('hello') // 'HELLO'
upper ํจ์๋ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ str์ ๋๋ฌธ์๋ก ๋ณํํ ๊ฐ์ ๋ฆฌํดํ๊ณ ์์ผ๋ฉฐ, ์๋ณธ str์ ๋ณ๊ฒฝ๋์ง ์๋๋ค. ์ด๋ ํจ์์ ๋งค๊ฐ๋ณ์์ ์ ๋ ฅ๋ง์ผ๋ก ํจ์ ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ๊ณ ์์ผ๋ฉฐ ์ ๋ฌ๋ ๊ฐ์ ์์ ํ์ง ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์์ ํจ์๋ผ๊ณ ํ ์ ์๋ค.
๐ค Math.random()์ ์์ ํจ์๊ฐ ์๋๋ค! ์์ผ๊น?
- ์ด๋ค ๊ฒฐ๊ณผ๊ฐ์ด ์์ธก์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์์ ํจ์๊ฐ ์๋๋ค! ๋งค๋ฒ ๋๊ฐ์ ๊ฐ์ด ๋ฆฌํด๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐ค ์ด๋ค ํจ์๊ฐ fetch API๋ฅผ ์ด์ฉํด AJAX ์์ฒญ์ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์. ์ด ํจ์๋ ์์ ํจ์๊ฐ ์๋๋ค. ์์ผ๊น?
- Ajax ์์ฒญ์ ์ธ๋ถ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์ด๋ค.
Effect Hook
- useEffect๋ ์ปดํฌ๋ํธ ๋ด์์ Side effect๋ฅผ ์คํํ ์ ์๊ฒ ํ๋ Hook ์ ๋๋ค. ์ด ์ปดํฌ๋ํธ์์ ์คํํ๋ Side effect๋ ๋ธ๋ผ์ฐ์ API๋ฅผ ์ด์ฉํ์ฌ, ํ์ดํ์ ๋ณ๊ฒฝํ๋ ๊ฒ
useEffect(ํจ์)
- useEffect์ ์ฒซ ๋ฒ์งธ ์ธ์๋ ํจ์์ด๋ฉฐ, ํด๋น ํจ์ ๋ด์์ side effect๋ฅผ ์คํํ๋ฉด ๋๋ค.
- useEffect์ ๋ ๋ฒ์งธ ์ธ์๋ ๋ฐฐ์ด๋ก, ์ด ๋ฐฐ์ด์์๋ ์กฐ๊ฑด์ ๋ด๊ณ ์๋ค. ์กฐ๊ฑด์ boolean ํํ์ ํํ์์ด ์๋, ์ด๋ค ๊ฐ์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋๋ฅผ ์๋ฏธํ๋ฏ๋ก ๋ฐฐ์ด์๋ ์ด๋ค ๊ฐ์ ๋ชฉ๋ก์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค. ์ด๋ฅผ ์ข ์์ฑ ๋ฐฐ์ด์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
'๐ป Development > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Cmarket Hooks (0) | 2022.12.27 |
---|---|
[React] ์ํ๊ด๋ฆฌ (0) | 2022.12.27 |
[React] React ๋ฐ์ดํฐ ํ๋ฆ๊ณผ Lifting state up (0) | 2022.12.11 |
[React] React์์์ State ์ด๋ฒคํธ ์ฒ๋ฆฌ (1) | 2022.11.30 |
[React] React State & Props (0) | 2022.11.30 |