개발자
Recoil의 문서에서 React의 한계에 대해 적은 부분입니다. Context는 단일 값만 저장할 수 있으며, 자체 소비자(consumer)를 가지는 여러 값들의 집합을 담을 수는 없다. 이 중에서, '자체 소비자(consumer)를 가지는 여러 값들의 집합을 담을 수는 없다.' 라는 부분이 이해가 안됩니다. 여기서 의미하는 자체 소비자가 무엇인가요? 여러 값들의 집합은 객체를 의미하는 것인가요? 또는 상태에 대한 얘기인가요? Recoil 공식 문서 https://recoiljs.org/ko/docs/introduction/motivation React context 공식 문서 https://ko.reactjs.org/docs/context.html
답변 1
번역본이 좀 헷갈리는 것 같긴 하네요. 영어 원문: Context can only store a single value, not an indefinite set of values each with its own consumers. 의역: Context는 단일 값만 저장할 수 있으며 각각의 소비자를 가지는 값들의 집합 (객체)은 저장할 수 없습니다. React Context는 단일 값만 저장이 가능합니다. 여러 값들의 집합 -> 객체를 의미하는게 맞습니다. 예를 들어서 Context의 Provider에 value 값으로 객체를 주게되면, 매번 새로운 객체가 생성이 되기 때문에 Provider를 가진 Parent Component 리렌더 -> 전체 하위 트리 리렌더가 발생합니다. 참고: https://ko.reactjs.org/docs/context.html#caveats "자체 소비자(consumer)를 가지는 여러 값들의 집합을 담을 수는 없다." - Context Provider에 객체를 전달하더라도 각각의 객체의 값에 해당하는 consumer (소비자)를 생성할수는 없다 라는 소리인것 같습니다. ex) state = { a: 1, b: 1, c:1 } 일때, state.a, state.b, state.c 각각 따로 consumer를 생성할 수 없다. 예시를 들어드리자면, 이 블로그 (https://flexiple.com/react/provider-pattern-with-react-context-api/#section2) 의 코드 샌드박스를 열어보셔서 (https://wyx58yqvjl.csb.app/), 개발자 도구를 켜신 뒤 react dev tool에서 컴포넌트 리렌더 될때 하이라이트를 켜고 앱에서 언어를 바꿔보시면, 전체 트리가 리렌더 되는 것을 보실 수 있습니다. *consumer (소비자)는 Provider/Producer - Consumer 디자인 패턴에서 Provider가 제공하는 상태를 소비하는 주체를 뜻합니다. Context API에서는 Context Consumer가 될 것 같습니다. https://reactjs.org/docs/context.html#contextconsumer *provider 패턴: https://www.patterns.dev/posts/provider-pattern/
익명
작성자
2022년 11월 18일
자세한 설명 감사합니다! 이해됐어요
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!