React.useEffect(() => {
return () => {
};
}, []);
// 1. 컴포넌트의 첫 렌더링 시 arrow function 무조건 실행
// 2. 두번째 렌더링은 arrow function을 무조건 실행하지는 않는다.
// 의존성 배열(dependency array)에 들어가있는 요소를 확인하고 바뀐게 있을때만 실행한다.
// 만약 의존성 배열을 비워놨으면 첫 렌더링 시 함수만 한 번 실행하고 함수는 이제 실행되지 않는다.
// 3. arrow function의 return 내부는 clean up 부분이다.
// 즉, 컴포넌트가 화면에서 사라질 때 동작하는 걸 넣어두자.
componentDidMount
, componentDidUpdate
, componentWillUnmount
를 합쳐둔 것이라고 생각하면 좋다.컴포넌트가 처음 렌더링될 때 request를 보내고 싶으면 useEffect()를 사용한다.
const handleLoad = async () => {
const { foods } = await getFoods();
setItems(foods)
}
useEffect(() => {
handleLoad();
}, []);
함수형 컴포넌트에서 addEventListener 는 어디에 붙여야할까?
DOM이 있어야 이벤트가 발생할 수 있으므로 클래스 컴포넌트의 componentDidMount 위치와 같은 곳에 있어야한다. 즉, userEffect 안에다 넣어줘야한다.
참조 블로그
(예시가 많아서 좋음) 독일 개발자 초록이 - React hooks 리액트 훅 useEffect란?
자라는 것을 잘하는 개발자 - React Hooks : useEffect() 함수