Skip to content

Instantly share code, notes, and snippets.

@finom
Created May 11, 2020 13:36
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 finom/4b545ed186706f4355d2b6bc9e271c38 to your computer and use it in GitHub Desktop.
Save finom/4b545ed186706f4355d2b6bc9e271c38 to your computer and use it in GitHub Desktop.
[finom/with-context-providers] A react decorator which wraps a component by context providers
/*
A bit of syntax sugar over context providers. Allows to turn code like this:
<SomeProvider1>
<SomeProvider2>
<SomeProvider3>
<MyComponent />
</SomeProvider3>
</SomeProvider2>
</SomeProvider1>
Into code like that:
withContextProviders(SomeProvider1, SomeProvider2, SomeProvider3);
*/
import { createElement } from 'react';
export default function withContextProviders(...providers) {
return (BaseComponent) => (props) => {
let component = createElement(BaseComponent, props);
providers.forEach((Provider) => {
component = createElement(Provider, null, component);
});
return component;
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment