02. useEffect

고명빈·2021년 8월 16일

리액트 함수 정리

목록 보기
3/3

a. 부수 효과를 발생 시키는 hook

useEffect(() => {
    document.title = `업데이트 횟수: ${count}`
})
  • 컴포넌트 렌더링 후에 useEffect에 등록된 매개변수 함수가 호출됨
  • 렌더링 결과가 DOM에 반영된 후, 비동기로 호출

b. 의존성 배열

useEffect(() => {
    getUserInfo(userId).then(data => setUser(data));
}, [userId, func1]);
  • useEffect 두번째 매개변수로 의존성 배열을 넣을 수 있다.
  • 의존성 배열의 역할은 해당 배열에 포함된 값이 변경됐을 때로 부수 효과 발생을 제한 할 수 있다.
  • 일반적으로 의존성 배열에 들어가는 값들은 컴포넌트 내부의 상태값 또는 속성값, 지역변수, 지역 함수 등이 있다. 여기서 상태값 변경 함수(ex> setUser)는 예외적으로 없어도 된다.
  • 컴포넌트 외부 함수 또한 의존성 배열에 기입할 필요는 없다.
  • 의존성 배열에 빈 배열을 넣으면 컴포넌트 생성시에만 부수 효과가 호출되게 구현할 수 있다.

c. useEffect의 반환 함수

 useEffect(() => {
    const onResize = () => setWidth(window.innerWidth);
    window.addEventListener('resize', onResize);
	return () => {
        window.removeEventListener('resize', onResize);
    }
}, []);
  • useEffect 반환 함수 호출 시점은 다음과 같다
    1. 다음 useEffect가 호출 되기 직전에 호출된다.
    2. 컴포넌트가 사라지기 직전(unmount) 되기 직전에 마지막으로 호출된다.

0개의 댓글