Skip to content

Instantly share code, notes, and snippets.

@donabrams
Last active September 16, 2016 21:22
Show Gist options
  • Select an option

  • Save donabrams/51661b6b45f2fb2c25e6846e9a4182ec to your computer and use it in GitHub Desktop.

Select an option

Save donabrams/51661b6b45f2fb2c25e6846e9a4182ec to your computer and use it in GitHub Desktop.
Component nest
const nest = ({components: [Wrapper, ...rest] = [], props={}, children}) => rest
? nest({components: rest, props, children: <Wrapper {...props}>{children}</Wrapper> })
: <Wrapper {...props}>{children}</Wrapper>
nest({components: [Wrapper1, Wrapper2]}) // <Wrapper2><Wrapper1/></Wrapper2>
const Nest = ({children, components=[], ...rest}) =>
components.reduce((acc, Wrapper) => <Wrapper {...rest}>{acc}</Wrapper>, children)
<Nest components={[Wrapper1, Wrapper2]}/> // <Wrapper2><Wrapper1/></Wrapper2>
const nest = ({components = [], props={}, children}) =>
components.reduce((acc, Wrapper) => <Wrapper {...props}>{children}</Wrapper>, children)
nest({components: [Wrapper1, Wrapper2]}) // <Wrapper2><Wrapper1/></Wrapper2>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment