Provider를 외부에 노출하는 것보다 내부 로직으로 숨기는 것은 어떤가요?
<Dropdown.Provider list={data}>
<Dropdown.Container>
<Dropdown.Trigger></Dropdown.Trigger>
<Dropdown.List></Dropdown.List>
</Dropdown.Container>
</Dropdown.Provider>위와같이 Provider을 노출하는 것보다, 아래와 같이 Container 내부에 Provider을 불러와서 사용하는 것이 캡슐화 측면에서 좋지 않나요?!
// DropdownContainer
<DropdownContextProvider>
<div
className={cx("Dropdown")}
onKeyDown={handleKeyDown}
onClick={(e) => e.stopPropagation()}
>
{children}
</div>
</DropdownContextProvider>
<Dropdown.Container list={data}>
<Dropdown.Trigger></Dropdown.Trigger>
<Dropdown.List></Dropdown.List></Dropdown.Container>
답변 2
1
말씀하신 방법이 깔끔하긴 하지만,
그렇게 하면 Container에서는 useDropdown 훅을 사용하지 못하게 됩니다.
컨텍스트는 Provider로 감싼 내부의 컴포넌트들에서만 접근 가능하기 때문입니다.
즉 최상단 컴포넌트에는 Provider로 감싸주는 것이 필요하고,
나머지 모든 컴포넌트는 그보다 하위에 존재해야 하기 때문에,
말씀하신 방식에 따르더라도 Container 하위에 또다른 컴포넌트를 만들어야 하게 될 수 있습니다.
혹은 그 방식에 따르면서 Container에서는 context에 접근하지 않도록 하거나요.
0
안녕하세요, 인프런 AI 인턴입니다.
leejha님께서 질문하신 내용에 대해서 답변드립니다.
Provider를 외부에 노출하는 방식과 내부 로직으로 숨기는 방식 사이의 선택은 주로 캡슐화와 컴포넌트의 재사용성 측면을 고려하여 결정됩니다. 외부에서 Provider를 노출하는 방식은 컴포넌트의 사용자가 Provider에 접근하여 데이터를 조작할 수 있도록 하여 유연성을 제공합니다. 반면에, Provider를 내부에 숨기면 컴포넌트의 구현 세부 사항을 추상화하며, 사용자로부터 내부 로직을 숨겨 캡슐화를 강화할 수 있습니다.
내부에 Provider를 숨기는 방식은 컴포넌트의 재사용성을 높이고, Provider의 사용을 컴포넌트 내부로 제한함으로써 API의 복잡성을 낮출 수 있는 장접이 있습니다. 이는 컴포넌트를 사용하는 측면에서 보다 쉽고 안전하게 컴포넌트를 활용할 수 있도록 합니다.
따라서 답변드리자면, 캡슐화와 재사용성 측면에서 Provider를 내부 로직으로 숨기는 것이 좋을 수 있습니다. 하지만, 이는 개발하고자 하는 애플리케이션의 구조와 요구 사항에 따라 다르므로, 구체적인 상황을 고려하여 결정하는 것이 중요합니다.
mcp 설치를 못하겠어요
0
12
1
라이브러리 관련 질문 있습니다!
0
11
1
output-styles은 Claude Code의 공식 기능이 아니라고 하는데 혹시 변경된걸까요?
0
16
2
클로드 변경
0
14
1
/config 에서 output-style 을 변경
0
17
1
한국어 문제
0
17
2
Node.js 관련 질문드립니다.
0
22
3
클로드 버전업 설치
0
21
2
쿠폰 문의 드립니다.
0
15
2
13강 프로젝트 생성 Next.js 설치이슈
0
21
3
Shell Command: Install 'cursor' command 진행에서 막혔습니다
0
21
3
74. 데이터 캐시 - 1 (이론) 강의 영상 누락
0
25
1
제네릭을 사용하실 때 콤마
0
167
2
popover createPortal 방식에서
0
146
2
스낵바를 만들 때 snackBarContext와 snackBarSetContext
0
146
2
snackbar를 createportal를 썻을 때 갯수 조절이 가능한가요?
0
193
1
useCallback, useMemo의 차이에 대해서 궁금합니다.
0
365
1
createPortal 활용해서 modal 만들 때 활용한 MutationObserver 코드 관련 질문
0
356
3
강의자료 (보일러플레이트) 다운로드 관련 질문
0
256
1
모달만드는 방식 질문
0
243
1
캐러셀 동작원리
0
306
2
dropdown 내부에서 data의 타입을 알아야 할까요?
0
199
1
keyEventMap를 전역에 구현하신 이유가 궁금합니다!
0
272
2
테일윈드로 포탈로 모달작성시 뒤에 클릭이 안됩니다
1
316
2





