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

emJ님의 프로필 이미지
emJ

작성한 질문수

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

11.1) Context란

객체 재생성에 대한 질문입니다.

작성

·

328

0

안녕하세요

data와 함수들을 같이 전달했을 때 '객체'의 재 생성이 일어나는데, useMemo로 래핑 했음에도 왜 dispatches의 재 생성을 막을 수 없는건가요?

답변 1

0

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

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

제가 작성해주신 질문을 제대로 이해했는지 모르겠습니다만...

우선 함수들이 useCallback으로 래핑되어 재 생성되지 않는다고 해도

data는 재 생성되기 때문에 결론적으로 Provider에게 value Prop으로 전달되는 객체 자체는 재 생성됩니다. 따라서 하위 컴포넌트들이 리렌더 됩니다.

이것을 막기 위해서는 재 생성되지 않는 함수들만 따로 모아서 별도의 Context.Provider를 설정해 공급해 주어야 합니다.

emJ님의 프로필 이미지
emJ
질문자

안녕하세요!

data와 분리하여 전달했을 때 data 값이 변하면 결국 재생성이 일어나 하위컴포넌트들의 리랜더가 일어난다. 때문에 분리하여 작성한 dispatches의 Provider도 하위 컴포넌트이기 때문에 useMemo로 래핑해준다.

가 맞을까요? 맞다면 결론적으로 분리해주어야 하는 이유에대해서는 이해가 되는데 data와 함수들을 같이 전달되었을 때의 경우는 이해되지 않습니다.

같이 전달하던 따로 전달하던 결국 하위컴포넌트들의 리렌더가 일어나 useMemo를 사용하게 되는데

이 useMemo가 data와 전달하면 작동하지 않는 것인가요?

감사합니다

emJ님의 프로필 이미지
emJ

작성한 질문수

질문하기