개발자

useEffect에 대해 질문있습니다.

2024년 09월 24일조회 81

프론트엔드 개발자로 취업을 준비중입니다. 공부를 하면서 useEffect에 대해 아무리 봐도 너무 이해가 되지 않더라구요. 우선 제가 이해한건 데이터를 가져올 때 오류가 날 수 있는 상황이 오므로 사용자에게 UI를 우선 보여주고 그 다음 useEffect 부분이 실행이 된다.... 까지 이해하고 있습니다. 그런데 스크롤 이벤트나, 다른 이벤트도 useEffect안에 작성이 된 부분도 있고 또 useEffect 마지막에 [] 배열 부분에 어떤 값을 작성하면 이 값만 한번 실행이 된다... 이말도 무슨 말인지 이해가 되지 않더라구요. 그래서 useEffect에 대해서 좀 더 쉽게 알려주시면 너무 감사드리겠습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

최여진님의 프로필 사진

안녕하세요! useEffect 는 리액트 컴포넌트가 화면에 렌더링 된 이후에 어떠한 작업을 수행하도록 해줍니다. 즉, useEffect(callback, dependency) 형태에서 dependency 배열 안에 있는 값이 변경될때마다 callback 함수가 실행됩니다. 배열 안에 아무것도 안넣으면([]) -> 컴포넌트 처음 만들어질때 한번만 callback 함수 실행 (ex. 이벤트 리스너 등록, data 가져오기 등) 배열 안에 특정 값을 넣으면 -> 그 값이 변경될때만 callback 함수 실행 (ex. state 로 관리하던 유저 이름이 변경되어서 해당하는 user의 data 를 fetch 해야한다던가?)

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 09월 24일

useEffect는 React Hook 중 하나로서, React 컴포넌트가 렌더링 될 때마다 특정 작업을 실행할 수 있게 하는 기능입니다. 주로 네트워크 요청, 인풋값 검사, 스크롤 이벤트 처리 등의 작업에 활용됩니다. useEffect의 동작은 두 개 부분으로 구분 가능합니다: Side effect와 Clean up. 1. Side effect: 이는 렌더링 후 실행되는 함수를 말합니다. 예를 들어 데이터 로딩, 구독 설정, 수동 변경 DOM 등등. useEffect 내부에서 정의한 함수가 바로 이 부분인데요, 이 함수는 첫번째 렌더링과 이후의 모든 업데이트에서 호출됩니다 2. Clean up: 위 사이드 이펙트가 발생한 후 정리(clean-up)를 해야 할경우 사용합니다. 예를 들면 구독 해제처럼 별도의 작업이 필요한 경우에 활용됩니다. 위에서 정의한 함수에서 반환(return)하는 함수가 바로 Clean up 함수입니다. 그리고 useEffect의 마지막에 보시는 [], 즉 종속성 배열(dependency array) 관련해서 설명드리겠습니다. 이 배열 안에 특정 값을 넣게 되면 그 값이 변할 때만 useEffect 안에 정의된 side effect(함수)가 실행됩니다. 반대로 아무 값도 넣지 않으면 컴포넌트가 처음 렌더링 될 때 한번만 실행되고, 그 이후에는 실행되지 않게 됩니다. 예를 들어, [props.value]와 같이 배열 안에 값을 넣게 되면 prop.value가 변경될 때 마다 함수가 실행되게 됩니다. 그래서 자주 사용하는 패턴이 [ ]를 넣어주는건데요, 컴포넌트가 처음 마운트 될 때만 함수를 실행하고 싶을 경우 활용합니다. useEffect의 사용 방식을 알면, 리액트에서 데이터 요청 및 처리 등 비동기 작업을 언제 하면 좋은지, 이벤트 핸들러나 타이머 등을 언제 clean-up 해야 하는지 등에 대해 이해하게 도움이 됩니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!