์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ ์ง์ฝํฌ๋น
- javascript
- IT๊ฐ๋ฐ์บ ํ
- ๋ฆฌ์กํธ
- CS
- react
- App Runner
- html
- React.js
- ์ธ์ฌ์ด๋์์
- BFS
- react-query
- ์ค๋์ดํผํฉํ ๋ฆฌ
- Algorithm
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ ๋ฐ๋ฏธ
- ip
- ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ๋ฐ์๋ถํธ์บ ํ
- ๋ฉ๋ชจ๋ฆฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ๋ก์ธ์ค
- ํ๋ก์ ํธ์บ ํ
- ํด์
- ํ์ ์คํฌ๋ฆฝํธ
- #ํ๋ก์ ํธ์บ ํ #ํ๋ก์ ํธ์บ ํํ๊ธฐ #์ ๋ฐ๋ฏธ #์ค๋์ดํผํฉํ ๋ฆฌ #์ ์ง์ฝํฌ๋น #์ธ์ฌ์ด๋์์ #IT๊ฐ๋ฐ์บ ํ #๊ฐ๋ฐ์๋ถํธ์บ ํ #๋ฆฌ์กํธ #react #๋ถํธ์บ ํ #๋ฆฌ์กํธ์บ ํ
- typescript
- ์ค๋ ๋
- ๋คํธ์ํฌ
- cs #๋คํธ์ํฌ
- Today
- Total
Bin's Blog
[์ ๋ฐ๋ฏธx์ค๋์ดํผํฉํ ๋ฆฌ] 10์ฃผ ์์ฑ ํ๋ก์ ํธ ์บ ํ 19์ผ์ฐจ - ๋ฆฌ์กํธ(2) ๋ณธ๋ฌธ
[์ ๋ฐ๋ฏธx์ค๋์ดํผํฉํ ๋ฆฌ] 10์ฃผ ์์ฑ ํ๋ก์ ํธ ์บ ํ 19์ผ์ฐจ - ๋ฆฌ์กํธ(2)
hotIce 2023. 6. 23. 20:36๐ค ๋ฆฌ์กํธ ํ (Hook)์ด๋?
๐ ๋ฆฌ์กํธ ํ ์ ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ๊ด๋ฆฌ์ ์๋ช ์ฃผ๊ธฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
๐ ์ด์ ์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ํด๋์คํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๐ค ์ ์๋ช ์ฃผ๊ธฐ๊ฐ ํ์ํ ๊น?
๐ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ ์ปดํฌ๋ํธ๊ฐ ํ์ด์ง์ ์ฒ์ ๋ ๋๋ง๋ ๋, ์ปดํฌ๋ํธ์ ์ํ๋ ์์ฑ์ด ๋ณ๊ฒฝ๋ ๋, ์ปดํฌ๋ํธ๊ฐ ํ์ด์ง์์ ์ ๊ฑฐ๋ ๋์ ์คํ๋๋ค.
๐ ๋ค์ํ ํ์ฉ์ฌ๋ก๊ฐ ์๋ค.
1๏ธโฃ ๋ฉ์๋์์ API๋ฅผ ํธ์ถํด์ ์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์ ์ ์ํํ๋ค.
2๏ธโฃ ์ด๋ฒคํธ ๋ฆฌ์ค๋, ํ์ด๋จธ, ๋ฑ๋ก๋ ๊ตฌ๋ ๋ฑ์ ์ค์ ํ ํ์ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ผ์ง ๋ ์ด๋ค์ ์ ๋ฆฌํด์ผ ํ๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ณ , ์ฑ๋ฅ์ ์ ์งํ๋ค.
3๏ธโฃ ์ปดํฌ๋ํธ์ ์ํ๋ ์์ฑ์ด ๋ณ๊ฒฝ๋๋ฉด ํน์ ์์ ์ ์ํํ ๋ ์ฌ์ฉํ๋ค.
1๏ธโฃ useState
๐ ํจ์ํ ์ปดํฌ๋ํธ์์ ๋์ ์ผ๋ก ๋ฐ๋๋ ๊ฐ์ ๊ด๋ฆฌํ ๋ ์ฌ์ฉํ๋ฉฐ ์ํ ์ ์ง ๊ฐ๊ณผ ๊ทธ ๊ฐ์ ๊ฐฑ์ ํ๋ ํจ์๋ฅผ ๋ฐํํ๋ค.
๐ ํจ์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๊ด๋ฆฌํ๋ค.
๐ useState์ ๊ธฐ๋ณธ๊ตฌ์กฐ
const [count, setCount] = useState(0);
2๏ธโฃ useEffect
๐ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋๋ง๋ค ํน์ ์์ ์ ์คํํ ์ ์๊ฒ ํ๋ hook
๐ ์ฒซ ๋ฒ์งธ ์ธ์๋ ์คํํ ํจ์, ๋ ๋ฒ์งธ ์ธ์๋ ์์กด์ฑ ๋ฐฐ์ด์ ๋ฐ๋๋ค.
1๏ธโฃ ์์กด์ฑ ๋ฐฐ์ด์ด ์๋ ๊ฒฝ์ฐ
๐ ํ์ด์ง๊ฐ ๋ ๋๋ง ๋ ๋๋ง๋ค ํจ์๊ฐ ์คํ๋๋ค.
import React from "react";
React.useEffect(() => {
dispatch(getActions.getFundingAC(page));
});
2๏ธโฃ ์์กด์ฑ ๋ฐฐ์ด์ด ๋น์ด์์ ๊ฒฝ์ฐ
๐ ์ฒซ ๋ ๋๋ง ์์๋ง ํจ์(dispatch)๊ฐ ์คํ๋๋ค.
import React from "react";
React.useEffect(() => {
dispatch(getActions.getFundingAC(page));
}, []);
3๏ธโฃ ์์กด์ฑ ๋ฐฐ์ด์ ๊ฐ์ด ์์ ๊ฒฝ์ฐ
๐ ํด๋น๊ฐ(page) ๊ฐ์ด ๋ณํ ๋๋ง๋ค ํจ์(dispatch)๊ฐ ์คํ
import React from "react";
const [page, setPage] = React.useState(1)
React.useEffect(() => {
dispatch(getActions.getFundingAC(page));
}, [page]);
4๏ธโฃ ์ค์ต ์์
useEffect(() => {
const timer = setInterval(() => {
setCount((count) => count + 1)
}, 1000);
return () => {
clearInterval(timer);
console.log("clearup function works")
};
}, [])
๐ clearInterval() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์์ timer๊ฐ 1์ด์ 1์ฉ ์ฆ๊ฐํ๋ค. ๊ทธ๋ฌ๋ ๋ฐ๋ฉด์ clearInterval()ํจ์๊ฐ ์์ผ๋ฉด timer๊ฐ ํ ๋ฒ์ฉ 2์ฉ ์ฆ๊ฐํ๋ค.
๐ clearInterval ํจ์๋ Timer ๋ฐ๋ณต ํธ์ถ์ ๋ง์์ฃผ๋ ํจ์์ด๋ค. ๋ฐ๋ณตํธ์ถ์ ๋ง์์ฃผ๋๊น ์ด์ค์ผ๋ก ํ์ด๋จธ๊ฐ ํธ์ถ๋์ง ์๊ณ ๋ฑ ํ ๊ฐ์ Timer๊ฐ ์๋ํ๋ค.
๐ useState()ํจ์์์ ๊ฐ์ด ๋ฐ๋๋๋ง๋ค ๋ฆฌ๋ ๋๋ง ๋๋ฉด์ => useEffect()๊ฐ ์คํ๋๊ณ => ๊ทธ๋ฆฌ๊ณ clearInterval()ํจ์ ๋๋ฌธ์ ํ ๋ฒ๋ง ๋์ํ๊ณ ์ข ๋ฃ๋๋ค.
๋ณธ ํ๊ธฐ๋ ์ ๋ฐ๋ฏธ-์ค๋์ดํผํฉํ ๋ฆฌ 10์ฃผ ์์ฑ ํ๋ก์ ํธ์บ ํ ํ์ต ์ผ์ง ํ๊ธฐ๋ก ์์ฑ ๋์์ต๋๋ค.