Polymorphic Components

React 🔴 Senior

Definition

Composants qui peuvent changer leur element HTML racine via une prop 'as' ou 'component', tout en conservant un typage TypeScript correct.

Analogie

Comme un costume transformable : le meme vetement peut devenir veste, gilet ou manteau selon le bouton presse.

Exemple de code

function Box<C extends React.ElementType = 'div'>(
  { as, children, ...props }: { as?: C } & React.ComponentPropsWithoutRef<C>
) {
  const Component = as || 'div';
  return <Component {...props}>{children}</Component>;
}
<Box as="section">...</Box>
<Box as="a" href="/">Lien</Box>

Cas d'usage

Design systems ou un meme composant stylise doit s'adapter a differents elements HTML semantiques.

#patterns#typescript#design-system