Udemy React 강의 164번 정리
이번 강의에서는 prop drilling을 줄이는 한 가지 방법, 바로 컴포넌트 합성(Component Composition)에 대해 배웠다.
핵심은 상태를 어디에 두느냐보다 함수를 누구에게까지 전달해야 하느냐에 있다.
App
└─ Shop
└─ Product
<App>
<Shop onAddItemToCart={handleAddItemToCart}>
<Product onAddToCart={handleAddItemToCart} />
</Shop>
</App>
이게 prop drilling
이 컴포넌트 안에서 이 함수가 실제로 실행되는가?
function Shop({ onAddItemToCart }) {
return (
<ul>
{products.map(product => (
<Product
key={product.id}
onAddToCart={onAddItemToCart}
/>
))}
</ul>
);
}
function Shop({ children }) {
return <ul>{children}</ul>;
}
App에서 직접 Product 렌더링:
<Shop>
{products.map(product => (
<Product
key={product.id}
onAddToCart={handleAddItemToCart}
/>
))}
</Shop>
App → Product
즉, 함수가 필요한 컴포넌트에게만 전달됨.
하지만 이 방법에도 한계가 있다.
모든 로직을 App으로 끌어올리면 App 컴포넌트가 점점 비대해짐.
즉, 모든 prop drilling을 component composition으로 해결할 수는 없음.
그래서 다음 강의에서는 Context API / 전역 상태 관리를 배우게 될 예정.