<aside> ๐ฅ useEffect?
์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋๋ง๋ค ํน์ ์์ ์ ์ํํ ์ ์๋๋ก ์ค์ ํด์ฃผ๋ Hook.
ํด๋์คํ ์ปดํฌ๋ํธ์ componentDidMount + componentDidUpdate๋ฅผ ํฉ์น ํํ
๊ธฐ๋ณธ ์์ฑ ๋ฐฉ๋ฒ
useEffect(() => {},[])
</aside>
<aside> ๐ฅ ์ฌ์ฉํด๋ณด๊ธฐ
๋ ๋๋ง ์์ useEffect๊ฐ ์๋๋๋ค.
import React, { useEffect, useState } from "react";
const Info = () => {
const [name, setName] = useState("");
const [nickname, setNickname] = useState("");
useEffect(() => {
console.log("๋ ๋๋ง์ด ์๋ฃ๋์์ต๋๋ค!");
console.log({
name,
nickname,
});
});
const onChangeName = (e) => {
setName(e.target.value);
};
const onChangeNickname = (e) => {
setNickname(e.target.value);
};
return (
<div>
<div>
<input value={name} onChange={onChangeName} />
<input value={nickname} onChange={onChangeNickname} />
</div>
<div>
<div>
<b>์ด๋ฆ:</b> {name}
</div>
<div>
<b>๋๋ค์:</b> {nickname}
</div>
</div>
</div>
);
};
export default Info;
</aside>
<aside> ๐ฅ ๋ง์ดํธ ๋ ๋๋ง ์ฌ์ฉํ๊ณ ์ถ์ ๋
๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ก ๋น ๋ฐฐ์ด์ ๋ฃ์ด์ฃผ๋ฉด ์ ๋ฐ์ดํธ ๋ ๋ ์คํ๋์ง ์๋๋ค.
useEffect(() => {
console.log("๋ ๋๋ง์ด ์๋ฃ๋์์ต๋๋ค!");
console.log({
name,
nickname,
});
}, []);
</aside>
<aside> ๐ฅ ํน์ ๊ฐ์ด ์ ๋ฐ์ดํธ ๋ ๋๋ง ์คํํ๊ณ ์ถ์ ๋.
๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ๋ฐฐ์ด์ ๊ฒ์ฌํ๊ณ ์ถ์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๋ฐฐ์ด ์์๋ useState๋ฅผ ํตํด ๊ด๋ฆฌํ๊ณ ์๋ state๋ฅผ ๋ฃ์ด์ฃผ์ด๋ ๋๊ณ , props๋ก ์ ๋ฌ๋ฐ์ ๊ฐ๋ ๊ฐ๋ฅ.
const [name, setName] = useState("");
useEffect(() => {
console.log("๋ ๋๋ง์ด ์๋ฃ๋์์ต๋๋ค!");
console.log({
name,
nickname,
});
}, [name]);
</aside>
<aside> ๐ฅ ๋ท์ ๋ฆฌํ๊ธฐ
useEffect๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋๋ง ๋๊ณ ๋ ์งํ๋ง๋ค ์คํ๋๋ค.
๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๋ฐฐ์ด์ ์ด๋ค ๊ฐ์ ๋ฃ๋์ง์ ๋ฐ๋ผ ์คํ๋๋ ์กฐ๊ฑด์ด ๋ฌ๋ผ์ง๋ค.
์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋๊ธฐ ์ ์ด๋ ์ ๋ฐ์ดํธ๋๊ธฐ ์ง์ ์ ์ด๋ ํ ์์ ์ ์ํํ๊ณ ์ถ๋ค๋ฉด
useEffect์์ ๋ท์ ๋ฆฌ ํจ์๋ฅผ ๋ฐํํด์ฃผ์ด์ผ ํ๋ค.
</aside>