Replies: 2 comments 2 replies
-
일단 아직 지식이 부족해서 그런지, Organism Molecule Atom 으로 설명한 용어가 무엇을 의미하는지 알기 힘들어 설명을 덧붙여줬으면 합니다.
|
Beta Was this translation helpful? Give feedback.
-
아토민 디자인을 적용하는 것은 좋아보이는데, 저도 현재처럼 폴더명은 누구나 알기 쉽게 짓는 게 더 좋은 것 같아요 b
살짝 비교해둔 글을 찾아봤는데, Recoil도 결국 context를 사용은 하지만 구독기능을 별도 로직으로 관리해서 context보다 렌더링 측면에서 이점이 있을 것이라고 이해했습니다 b "실제로 최상단의 context 컴포넌트로부터 props drilling이 일어나고 있지만 그것을 겉으로는 숨겨주는 역할일 뿐이고" 이 부분은 Context api의 목적이 props drilling을 없애고자 하는거라 "Context의 상태가 변경되면 Context Provider 하위의 컴포넌트가 모두 재렌더링"되는 상황을 말한거라고 해석하면 될까요?
제가 질문 했던 의도는 Scrap.tsx 라는 컴포넌트 파일 안에서 사용할 useScrap이라는 훅이 있다면, 이 훅의 위치는 아래와 같아야 하지 않나 하는 것이었습니다. 컴포넌트 파일 내부에 작성하면 파일도 비대해지고 필요시에 훅을 찾기가 어려울 것 같아서요!
네! 제가 생각한 index.tsx의 역할은 그저 컴포넌트, 훅 들을 모아서 export 해주는 것입니다. 별도로 index.tsx가 없고 내보내고자 하는 컴포넌트를 components/index.tsx 에서 모두 export 하는 것으로 관리하는 방식도 좋을 것 같아요. 이 서비스는 해당사항이 없지만 라이브러리를 만들 때는 어떤 컴포넌트들이 export 되고 있는 지 한 눈에 보기 쉬워야 유지보수하기 쉬워서요!
보통 컴포넌트 끼리 공유할 수 있는 스타일은 common이나 style이라는 폴더에 따로 정의해서 import 해와서 사용하는 것 같아요. 아니면, 공통 폴더에 common이라는 폴더를 정의하여 공통으로 쓸 것들을 한꺼번에 다루는 방법도 있겠네요.
파일명 확장자 앞에 명확히 구분해주는 네이밍을 붙이는 것은 완전 찬성입니다 :) |
Beta Was this translation helpful? Give feedback.
-
@bucketressi
현재 프로젝트의 구조는
로 이루어져 있고, Atomic을 간단하게 변형한 디자인 패턴을 사용중입니다.
디자인 패턴을 간략하게 소개하면
Page(logic), Template(view)을
pages/
하나로 위임하고,Organism, Molecule, Atom을 모두
components/
로 위임한다음, Organism이나 Molecule 급으로 복잡한 컴포넌트는 하위 디렉토리를 만들어서 표현할 수 있도록 하는 방식입니다.지금 상태에서는 잘 드러나지 않지만,
Table
이라는 컴포넌트가 있다고 가정하고 예시를 들면Table/index.tsx
에서<TableHeader />
와<TableRow />
를 호출하고, 페이지에서<Table />
을 호출하는 방식입니다.커스텀 훅이 있는데
Page
가 모든 로직을 가져야 하는 이유와 JSX에서Template
이 굳이 존재하는 이유에 대해서 고민하고,모든 컴포넌트를
Organism
Molecule
Atom
세 단계로 나누는 것은 비효율적이라고 생각해서 고안한 패턴인데 어떻게 생각하시나요!Beta Was this translation helpful? Give feedback.
All reactions