https://reactjs.org/docs/composition-vs-inheritance.html
Se você deseja apenas evitar a passagem de alguns adereços por muitos níveis, a composição de componentes costuma ser uma solução mais simples do que o contexto.
function Page(props) {
const user = props.user;
const userLink = (
<Link href={user.permalink}>
<Avatar user={user} size={props.avatarSize} />
</Link>
);
return <PageLayout userLink={userLink} />;
// Now we have:
<Page user={user} />
// which renders
<PageLayout userLink={...} />
// which renders
<NavigationBar userLink={...} />
// which renders
{props.userLink}