Skip to content

Instantly share code, notes, and snippets.

@NuroDev
Created August 27, 2022 10:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NuroDev/ae5a418343c72fa71ba0df77443f8ffe to your computer and use it in GitHub Desktop.
Save NuroDev/ae5a418343c72fa71ba0df77443f8ffe to your computer and use it in GitHub Desktop.
🀏 Compose Providers ─ Cleaner pattern for handling multiple context providers
// https://twitter.com/bidah/status/1563197138854588417
import reduceRight from 'lodash/reduceRight';
import type { ElementType, ReactNode } from 'react';
interface ComposeProvidersProps {
components: Array<ElementType>;
children: ReactNode;
}
export function ComposeProviders({ components, children }: ComposeProvidersProps): JSX.Element {
return (
<>
{reduceRight(
components,
(memo, Component) => (
<Component>{memo}</Component>
),
children,
)}
</>
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment