"์ ์ฅ ๋ฒํผ ๋๋ ๋๋ฐ ์ Toast ์๋ฆผ์ด ๋ ๋ฒ ๋จ์ง? ๐ฑ ๋ด ์ฝ๋๊ฐ ์ด์ํ๊ฐ?"
๋ฆฌ์กํธ ํ๋ฉด์ ํ ๋ฒ์ฏค์ ๊ฒช์ด๋ดค์ ๊ฑฐ์ผ.
๊ทผ๋ฐ ์ฌ์ค ์ด๊ฑด ๋ค ์ฝ๋๊ฐ ์๋ชป๋ ๊ฒ ์๋์ผ! โโจ
useEffect(() => {
console.log("๐ฅ useEffect ์คํ๋จ!");
}, []);
๐ฅ useEffect ์คํ๋จ!
๐ฅ useEffect ์คํ๋จ!
๐ค "ํน์ ๋ด๊ฐ ์ํ๊ด๋ฆฌ๋ฅผ ์๋ชป ์ดํดํ๋...?"
๋ฆฌ์กํธ์ StrictMode๋ ๋์ ์ฝ๋๋ฅผ ๋ ๋ฒ ๋๋ฆฌ๋ฉด์ ๋ฌธ์ ๊ฐ ์๋์ง ๊ฒ์ฌํ๋ ์ฐฉํ ์น๊ตฌ์ผ!
StrictMode๊ฐ ๊ฒ์ฌํ๋ ๊ฒ | ์ ๋ ๋ฒ์ฉ์ด๋? ๐ค |
---|---|
โ ์ ์ฌ์ ์ธ ๋ถ์์ฉ(Side Effect) | ํ ๋ฒ ๋๋ฆฌ๊ณ ์ธ๋ง์ดํธ โ ๋ค์ ๋ง์ดํธ ํด์ ๋ฌธ์ ์ฐพ๊ธฐ |
โ ์ค๋๋(๋ ๊ฑฐ์) API ์ฌ์ฉ ๊ฒฝ๊ณ | ์ฝ๋ ์์ ์ฑ ๋ณด์ฅ |
์ฝ๊ฒ ๋งํ๋ฉด, ๋ฆฌ์กํธ๊ฐ ๋์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ฒ์ ๋ฆฌํ์ค ๊ณต์ฐ์ผ๋ก ์์ ์ฑ์ ์ฒดํฌํ๋ ๊ฑฐ์ผ!
function SaveButton() {
const [saved, setSaved] = useState(false);
useEffect(() => {
if (saved) {
toast("โ
์ ์ฅ ์๋ฃ!");
}
}, [saved]);
const handleSave = () => setSaved(true);
return <button onClick={handleSave}>์ ์ฅํ๊ธฐ</button>;
}
๐ ๋ฒํผ ๋๋ฅด๋ฉด ๊ฐ๋ฐ ๋ชจ๋์์ Toast ์๋ฆผ์ด ๋ ๋ฒ ๋จ๋ ํ์์ด ์๊น! ๐ฑ
๐ ํ์ง๋ง ์ค์ ๋ฐฐํฌ ํ๊ฒฝ์์ ๋ฑ ํ ๋ฒ๋ง ๋จ๋ ์์ฌํด๋ ๋ผ!
"StrictMode๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์์ ๋ฒจํธ์ผ!" ๐๏ธโจ
ํด๊ฒฐ๋ฒ | ์ค๋ช | ์ถ์ฒ๋ |
---|---|---|
๐ ๊ทธ๋ฅ ์ดํดํ๊ธฐ | ๋ฐฐํฌ์์ ์ ์ ์๋ํ๋ ๊ด์ฐฎ์! | โญโญโญโญโญ |
๐ โโ๏ธ StrictMode ๋๊ธฐ | ๋ฐ๋ก ๋ฌธ์ ๋ ์ฌ๋ผ์ง. ํ์ง๋ง ์ํโ | โญโญ |
โ useEffect ์ ๋ฆฌํ๊ธฐ | cleanup ํจ์์ useRef๋ก ๋ช ํํ ์ํ ๊ด๋ฆฌ | โญโญโญโญ |
๐ฅ ๊ฐ์ฅ ์ถ์ฒํ๋ ๋ฐฉ๋ฒ: ๊ทธ๋ฅ ์ดํดํ๊ณ ๋์ด๊ฐ๋ฉด ๋ผ!
*โ ๏ธ ์ด๋ฏธ์ง ์์ฑ ํ๋กฌํํธ:*
Developer confidently smiling and giving thumbs-up in front of React logo, digital cartoon style
๐ A: ์์ด! StrictMode๋ ๋ฐฐํฌ ์ ์๋ ์ ๊ฑฐ๋ผ.
๐ A: API๋ ๋ ๋ฒ ๋๋ค๋ฉด ๋ค ์ฝ๋์ ๋ฌธ์ ์ผ. useEffect
์ cleanup ํจ์๋ ์์กด์ฑ ๋ฐฐ์ด์ ์ ๊ด๋ฆฌํด์ค์ผ ๋ผ!
useEffect(() => {
fetchData();
}); // ์์กด์ฑ ๋ฐฐ์ด์ด ์์ด ๋ฌดํ๋ฃจํ ๋ฐ์!
useEffect(() => {
fetchData();
}, []); // ์ต์ด ํ ๋ฒ๋ง ์คํ๋จ
useEffect(() => {
fetchData(userId);
}, [userId]); // userId ๋ฐ๋ ๋๋ง ์คํ!
// next.config.js
module.exports = {
reactStrictMode: true, // ๊ฐ๋ฐํ ๋ ํ์ฑํ!
};
โ
์ฝ์ ๋ ๋ฒ ์ฐํ๋ ์ด์ ๋นํฉ NO!
โ
์ฝ๋์ ๋ถ์์ฉ์ ๊ด๋ฆฌํ๋ฉฐ ์์ ์ ์ผ๋ก ์์ฑํ๊ธฐ!
โ
Toast ๋ ๋ฒ ๋ ๋ "๋ฆฌ์กํธ๊ฐ ํ
์คํธ ์ค์ด๊ตฌ๋~๐" ํ๊ณ ์ฟจํ๊ฒ ๋๊ธฐ๊ธฐ!
"๋ ๋ฒ ํธ์ถ? ๋ฆฌ์กํธ๊ฐ ๋๋ฅผ ๋์์ฃผ๋๊ตฌ๋!"
์ด์ ๋๋ ๋ฆฌ์กํธ ์์ ๊ฐ ๋ฟ๋ฟ! ๐๐ฅ
์ด? ์ ๋๋ฒ์คํ๋์ง? ์ผ๋จ ํ๋๊ทธ ๋ฃ์ด์ ํ๋ฒ๋ง ์คํ๋๊ฒ ํ์! ๋ผ๋ ๋ถ์์ฌ๋ฅผ ๋ฏธ์ฐ์ ๋ฐฉ์งํ ์ ์๋ ์ข์ ๊ธ์ด๊ตฐ์.