import { useEffect, useState } from "react";
const Info = () => {
const [name, setName] = useState("์กฐํ์ง");
const [nickName, setNickName] = useState("RootCho");
useEffect(() => {
console.log("๋ง์ดํธ ๋ ๋๋ง ์คํ");
return () => {
console.log("์ธ๋ง์ดํธ ๋ ๋ ์คํ");
}; //์ด ์ปดํผ๋ํธ๊ฐ ํ๋ฉด์์ ์ฌ๋ผ์ง ๋ ์คํ. ๋ท์ ๋ฆฌ(cleanup)ํจ์
}, []);
useEffect(() => {
console.log("๋ ๋๋ง์ด ์๋ฃ๋์์ต๋๋ค."); //์ฒซ ๋ง์ดํธ ๋ ๋, name์ด ์
๋ฐ์ดํธ ๋ ๋๋ง๋ค ์คํ. Why? deps ๋ฐฐ์ด์ value๊ฐ์ด name์ด๋๊น
return () => {
console.log("clean-up"); //๊ธฐ์กด name์ด ์
๋ ฅ์ฐฝ์์ ์ฌ๋ผ์ง ๋ ์คํ
console.log(name); //๊ธฐ์กด name์ด ์ฝ์์ ์ฐํ
};
}, [name]);
return (
<>
<div>
<input
value={name}
placeholder="์ด๋ฆ"
onChange={(e) => setName(e.target.value)}
/>
<input
value={nickName}
placeholder="๋๋ค์"
onChange={(e) => setNickName(e.target.value)}
/>
</div>
<h1>์ด๋ฆ: {name}</h1>
<h1>๋๋ค์: {nickName}</h1>
</>
);
};
export default Info;
์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ๋๋ง๋ค ํน์ ์์ ์ ์ํํ๋๋ก ์ค์
useEffect( ( ) => { } , [ ] )
์ฒซ๋ฒ์งธ ์ธ์์๋ ์ฝ๋ฐฑํจ์, ๋๋ฒ์งธ ์ธ์์๋ ์์กด์ฑ ๋ฐฐ์ด[ ]์ด ๋ด๊ธด๋ค.
useEffect(()=>{
console.log("๋ง์ดํธ ๋ ๋ ์คํ")}) //๋ ๋๋ง๋ ๋ ๋ง๋ค ์คํ
useEffect(()=>{
console.log("๋ง์ดํธ ๋ ๋ ์คํ")},[ ]) //๋งจ ์ฒ์ ๋ง์ดํธ ๋์์ ๋ ์คํ (์ต์ด ํ ๋ฒ)
useEffect(()=>{
console.log("๋ง์ดํธ ๋ ๋ ์คํ")},[name])//๋งจ ์ฒ์ ๋ง์ดํธ ๋์์ ๋ ์คํ & ํน์ ๊ฐ(name)์ด ๋ ๋๋ง ๋ ๋๋ง๋ค ์คํ
useEffect(()=>{
console.log("๋ง์ดํธ ๋ ๋ ์คํ")
return () => {
console.log("์ธ๋ง์ดํธ ๋ ๋ ์คํ"); //๋ท์ ๋ฆฌ(cleanup)ํจ์. ์ด ๋ถ๋ถ์ ํด๋น ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ ๋์์ ๋ ์คํ
}},[])
โ ์ปดํฌ๋ํธ ๋ผ์ดํ์ฌ์ดํด
๋ง์ดํธ : ํ์ด์ง์ ์ปดํฌ๋ํธ๊ฐ ๋ํ๋จ.
์
๋ฐ์ดํธ(<-๋ฆฌ๋ ๋๋ง) : ์ปดํฌ๋ํธ ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธ.
์ธ๋ง์ดํธ : ํ์ด์ง์์ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ผ์ง.