Skip to content

Latest commit

 

History

History
16 lines (11 loc) · 791 Bytes

component-as-prop.md

File metadata and controls

16 lines (11 loc) · 791 Bytes
title
Component as Prop

In ReactJS, <Menu banner={MyBanner} /> is easy; in ReasonReact, we can't trivially pass the whole component module (it wouldn't even be syntactically valid because a module resides in another layer of the language). Solution:

let bannerCallback = (prop1, prop2) => <MyBanner message=prop1 count=prop2 />;

<Menu bannerFunc=bannerCallback />;

This also has some added advantages:

  • The owner is the one controlling how the component renders, not some opaque logic inside MyBanner.
  • Circumvents the tendency of needing a props spread in MyBanner's render, since passing a component to a child and the child using prop spread on said component usually go together.