props를 통해 데이터를 전달하는 과정에서 자식 컴포넌트에게 전달하기 위해서
중간 컴포넌트(이 props를 사용하지 않음에도!!)에게도 props를 전달해야하는 과정
⇒ 이 경우 거쳐지나가는 모든 컴포넌트들이 rerendering 됨 🤔
간단하고 빠른 컴포넌트 간 데이터 전달
(규모가 작은 어플리케이션의 경우)
코드 실행 없이도 어떤 데이터가 어디서 쓰이는 지 파악하기 쉬움
값이 어디서 사용되는지 명시적으로 파악 가능
const FileControls = ({ canWrite, canCopy, canDelete, file }) => {
return (
<div>
<span>{file.title}</span>
<button>View</button>
{canWrite && <button>Edit</button>}
{canCopy && <button>Copy</button>}
{canDelete && <button>Delete</button>}
</div>
);
};
당장은 문제 없이 작동되지만 버튼이 늘어날 수록 관리가 복잡해진다!!
사용자가 사용할 수 있는 array 액션을 제공해서 해결할 수 있다.
const FileControls = ({ availableActions, file }) => {
return (
<div>
<span>{file.title}</span>
{availableActions.map((action) => (
<button>{action.title}</button>
))}
</div>
);
};
이 방법을 사용하면 props의 영향을 주지 않고 버튼을 추가, 삭제, 수정할 수 있다!
자식 컴포넌트는 이런 작업에 대해 알고 있지 않아도 전달 받은 작업을 렌더링하기만 하면 됨 👍
⇒ Fetching에 특화된 Hook
*보일러 플레이트 : 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드를 말한다.
🔗 : Props Drilling - 프로그래밍 공부하기
🔗 : A better way of solving prop drilling in React apps
🔗 :Prop Drilling in React: How to Avoid It
🔗: [React] 상태관리와 전역상태관리 라이브러리
🔗 : React에서 Mobx 경험기 (Redux와 비교기)
🔗 : [ React-Query ] 총 정리 - velog
🔗 : [React] SWR tutorial