React.js > Hooks > useEffect
- useEffect는 2개의 인자를 받는다. 1번째 인자는 함수, 2번째 인자는 배열 형태로 받아 대괄호로 표시한다. useEffect는 컴포넌트가 렌더링 될 때 특정 작업을 수행할 수 있게 도와준다. 그리고 그 작업이 동작할 시기를 지정할 수 있다. 다음과 같이 3가지로 지정할 수 있다.
- componentDidMount(컴포넌트가 마운트 됐을 때): 컴포넌트가 나타남(렌더링됨)
- componentDidUpdate(컴포넌트가 업데이트 됐을 때): 컴포넌트에 변동이 생김
- componentWillUnmount(컴포넌트가 언마운트 됐을 때): 컴포넌트가 사라졌을 때
useEffect(()=> {});
useEffect(() => {},[]);
const [count, setCount] = useState(0);
useEffect(() => {}, [count]);
- useState와 useEffect를 이용해 브라우저 title 업데이트하기
const useTitle = (initialTitle) => {
const [myTitle, setMyTitle] = useState(initialTitle);
const updateTitle = () => {
const htmlTitle = document.querySelector("title");
htmlTitle.innerText = myTitle;
};
useEffect(updateTitle, [myTitle]);
return setMyTitle;
};
const App = () => {
const titleUpdater = useTitle("Loading...");
setTimeout(() => titleUpdater("Home"), 5000);
return (
<div></div>
);
};
- 위 코드 적용모습 Loading.. 표출하고 5초 후에 Home으로 변동