Skip to content

Instantly share code, notes, and snippets.

@itaditya
Last active March 25, 2022 19: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 itaditya/d22e6c369649ec42b8c80ac29d962af8 to your computer and use it in GitHub Desktop.
Save itaditya/d22e6c369649ec42b8c80ac29d962af8 to your computer and use it in GitHub Desktop.
Use JSX pragma for declarative config like Compound Components
/** @jsx slot */
const selectConfig = (
<group title="Members" element={<MemberGroup />}>
<option>
First Option
</option>
<divider />
{members.map((member) => (
<option element={<SuggestionOption member={member} />}>
<div>
Member {member}
</div>
</option>
))}
</group>
);
@itaditya
Copy link
Author

Babel Output

"use strict";

/** @jsx slot */
const selectConfig = slot(
  "group",
  {
    title: "Members",
    element: slot(MemberGroup, null)
  },
  slot("option", null, "First Option"),
  slot("divider", null),
  members.map((member) =>
    slot(
      "option",
      {
        element: slot(SuggestionOption, {
          member: member
        })
      },
      slot("div", null, "Member ", member)
    )
  )
);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment