Just Do IT!
React Hook useEffect has a missing dependency 해결 본문
728x90
반응형
과제 전형 진행하던 와중에 저런 문구가 나왔다.
useEffect에 나온 경고 문구였고 실행하는데는 문제가 없지만 이상하게 거슬려서(?) 구글에 그대로 쳐보았고, 역시나 같은 경고문을 받은 사람들의 글들이 나왔다.
원인
' useEffect 내부에서 실행된 함수 ' 에서 사용되는 변수를 useEffect의 배열안에 넣어주지 않았기 때문에 발생한다고 한다. 경고문이 나온 코드에서는 useEffect 안의 함수를 따로 바깥으로 빼내서 작성하고 그 함수만 넣어주었는데, 그래서 이 경고문이 나오지 않았나 싶다.
해결 방법
함수의 선언을 useEffect 내부로 옮겼고, 함수에서 사용되는 변수를 [] 안에 넣었더니 바로 오류가 해결되었다.
다른 방법도 있다.
바로 useCallback()을 사용하는 방법이다.
이 방법은 아래 블로그에 설명되어 있다.
useCallback이 없을 땐 리렌더링을 할 때마다 함수를 새롭게 만들고, 새롭게 실행되었던 것에 반해, useCallback을 사용하므로써 fetchUrl이 변화될 때만 함수가 실행되어 불필요한 함수의 생성 및 실행을 막을 수 있다고 한다.
useCallback에 대해 강의에서 들어보기만 하고 실제로 저굥한 적은 없는데 이렇게 경고문 하나로 알게 되어 신기하기도 하다. 나중에 이 경고가 다시 뜨면 그 때는 useCallback을 적용해봐야겠다.
728x90
'개발 공부 > Error' 카테고리의 다른 글
[Error] next.js 사용중 Delete cr 에러 해결하기 (0) | 2024.02.03 |
---|---|
[Error] React+Node 프로젝트 'error:03000086:digital envelope routines::initialization error' 오류 (0) | 2024.01.12 |
npm ERR! Cannot read properties of null (reading 'edgesOut') (0) | 2023.06.06 |
[Error] 새로고침 이후 로그인/로그아웃 토글이 되지 않을 때 (0) | 2023.02.09 |
[Error] useNavigate() may be used only in the context of a <router> component. (0) | 2023.02.09 |