가보자고
useEffect()
를 사용하면 특정 코드들이 첫 번째(처음) component render 에서만 실행되게 할 수 있다.// 예시)
const irunOnlyOnce = () => {
console.log("i run only once!")
};
useEffect(irunOnlyOnce, [])
irunOnlyOnce
함수는 딱 한번만 실행이 되고, 그 뒤로는 다신 호출되지 않는다!const [counter, setCounter] = useState("");
const [keyword, setKeyword] = useState("");
useEffect(() => {
console.log("SEARCH FOR", keyword);
}, []);
const [counter, setCounter] = useState("");
const [keyword, setKeyword] = useState("");
useEffect(() => {
console.log("SEARCH FOR....", keyword);
}, [keyword]); <<<----
[keyword]
를 추가하였으므로,keyword
의 값이 변화할 때'만' 코드가 실행된다.counter
나, 다른 state 의 값이 변화한다해도 NO신경. 무족권 keyword
만 바라보며 keyword
의 값이 변화했을 때만 console.log
를 실행시킨다.[keyword,counter, ...]
컴포넌트 생명 주기
예시)
function Hello() {
return <h1>Hello</h1>;
}
function App() {
const [showing, setShowing] = useState(false);
const onClick = () => setShowing((prev) => !prev);
return <div>
{showing ? <Hello /> : null}
<button onClick={onClick}>{showing ? "Hide" : "Show" } </button>
</div>;
}
<Hello />
컴포넌트를 숨기고 보여주는 기능이다.<Hello />
컴포넌트 아래 Hide
라고 적힌 버튼을 보여주고,onClick
이벤트가 발생하면 true
로 바뀌며 <Hello />
컴포넌트가 제거(destroy)되고, Show
버튼이 뜨도록 만듦function Hello() {
useEffect(() => {
console.log("created :)")
}, [])
return <h1>Hello</h1>;
}
<Hello />
컴포넌트가 보여질 때 콘솔창에 created :) 문구가 뜨도록 useEffect
를 추가하였다.<Hello />
컴포넌트가 destroy 될 때 콘솔에 destroyed :( 라고 찍어보자.function Hello() {
useEffect(() => {
console.log("created :)");
return () => console.log("destroyed :( "); <<<----
}, [])
return <h1>Hello</h1>;
}
🚩 hooks-effect : https://ko.reactjs.org/docs/hooks-effect.html