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

팀오님의 프로필 이미지
팀오

작성한 질문수

[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

10.4) useCallback과 함수 재생성 방지

onCreate에서 data상태 관련 질문입니다

해결된 질문

작성

·

459

0

안녕하세요 강사님!

최적화3 - useCallback 강의 듣던 중 의문점이 생겨 질문 남깁니다.

onCreate에 useCallback을 사용하고 의존성 배열을 빈 값으로 두면 mount시에 한번만 실행되기 때문에 data state가 초기값인 빈 배열인 상태이다 <= 까지는 이해하였습니다.

그런데 함수형 업데이트를 이용해서 인자로 data를 전달하면 최신 data state를 반영할 수 있다는 부분이 잘 이해가 안갑니다.

onCreate가 mount시에 생성되고 생성시의 data state가 계속 유지된다면 인자로 전달되는 data state또한 초기값인 빈 배열이 들어가게되어 결국 setData(([]) => [ newItem, [] ]) 처럼 동작해야 하는것이 아닌가요?

어떻게 인자로 전달되는 data에는 최신 상태가 반영되는건가요??

답변 1

4

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

함수형 업데이트는 setState 메서드에 인수로 새로운 상태값이 아닌 콜백함수를 전달하는 방식을 말하는데요

이 때 setState에 콜백함수로 전달된 함수는 어떤 상황이든 항상 매개변수로 최신의 State를 제공받습니다.

그러므로 onCreate함수내부에서 호출한 setState 일지라도 함수형 업데이트를 사용하면 useCallback으로 onCreate함수가 재 생성되지 않아도 최신의 상태값을 참조할 수 있게 됩니다.

팀오님의 프로필 이미지
팀오

작성한 질문수

질문하기