1๏ธโƒฃ ๊ณผ๊ฑฐ์˜ ์„ค๊ณ„ ํŒจ๋Ÿฌ๋‹ค์ž„: Container-Presenter ํŒจํ„ด

const Container = () => {
  const a = useFetchA();
  const b = useFetchB();
  return <Presenter a={a} b={b} />;
};

2๏ธโƒฃ ํ˜„์žฌ์˜ ์„ค๊ณ„ ํŒจ๋Ÿฌ๋‹ค์ž„: Suspense + ํ›… + ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๋ถ„๋ฆฌ

<Suspense fallback={<Loading />}>
  <UserProfileContainer />
</Suspense>

โœ… ํ˜„๋Œ€ ์„ค๊ณ„์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

๋ ˆ์ด์–ด ์—ญํ• 
useUserXXX ๋ฐ์ดํ„ฐ ํŒจ์น˜, ์บ์‹ฑ ๋กœ์ง
XXXContainer ํ›… ํ˜ธ์ถœ, Suspense ๋Œ€์‘
XXXView ์ˆœ์ˆ˜ UI ์ปดํฌ๋„ŒํŠธ (props ๊ธฐ๋ฐ˜)

๐Ÿ“ฆ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ ์˜ˆ์‹œ (Feature-first)

features/
โ””โ”€โ”€ user/
    โ”œโ”€โ”€ hooks/useUserProfile.ts
    โ”œโ”€โ”€ apis/fetchUserProfile.ts
    โ””โ”€โ”€ components/
        โ”œโ”€โ”€ UserProfileContainer.tsx
        โ””โ”€โ”€ UserProfileView.tsx