인프런 커뮤니티 질문&답변

으하핳님의 프로필 이미지
으하핳

작성한 질문수

실전 리액트 프로그래밍

리액트 훅 기초 익히기2

useEffect

작성

·

226

3

강의 너무 잘 보고 있습니다.

1. useEffect(callback) => 컴포넌트 렌더링 후에만 딱 1번 실행이고, useEffect(callback) 과 useEffect(callback,[])은 같은 거라고 보면 될까요?

2. useEffect(callback,userId) => 컴포넌트 렌더링 후 1번 실행 그 후에는 userId변할때만 실행인지, 컴포넌트 렌더링 관련없이 userId변할때만 실행인지 궁금합니다~

답변 2

8

이재승님의 프로필 이미지
이재승
지식공유자

1. useEffect(effect) ==> 컴포넌트가 렌더링될 때마다 호출됩니다.
2. useEffect(effect, []) ==> 첫 번째 렌더링 후에만 호출됩니다.
3. useEffect(effect, [userId]) ==> 첫 번째 렌더링 후에 호출되며, 이후에 userId가 변경될 때마다 호출됩니다.

3번에서 userId 라는 값은 항상 렌더링과 관련된 값이어야 합니다.
`렌더링과 관련된 값` 이라는 것은 그 값이 변경되면 컴포넌트가 다시 렌더링 되는지를 보고 알 수 있습니다.
어떤 변수의 값이 변경됐는데 컴포넌트가 다시 렌더링되지 않는다면 그 변수는 deps 배열에 넣을 필요가 없습니다.

결국 `렌더링과 관련된 값` 이라는 것은 컴포넌트 상태값, 속성값 등을 말하는거구요.
전역 변수 등은 `렌더링과 관련된 값` 이 아닙니다.

2

으하핳님의 프로필 이미지
으하핳
질문자

도움이 많이 되었습니다.감사합니다.

으하핳님의 프로필 이미지
으하핳

작성한 질문수

질문하기