• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

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

22.09.22 18:05 작성 조회수 393

0

안녕하세요 강사님!

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

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

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

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

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

답변 1

답변을 작성해보세요.

4

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

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

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

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