Composition

Learn how to compose components in Cerberus.

The as Prop

Used to change the underlying HTML element that a React component renders. It provides a straightforward way to change the underlying element while retaining the component's functionality.

<Text as="h3">Hello, world!</Text>

The asChild Prop

Used to compose a component's functionality onto its child element. This approach, inspired by Radix UI, offers maximum flexibility.

<Button asChild>
<Link href="/some-page">Open</Link>
</Button>

In this example, the asChild prop allows the link to be used as the button (e.g., a button-styled link).

Best Practices

To avoid common pitfalls when using the as and asChild props, there are a few best practices to consider:

  • Forward Refs: Ensure that the underlying component forwards the ref passed to it properly.
  • Spread Props: Ensure that the underlying component spreads the props passed to it.

Advanced Usage Example

const MyComponent = forwardRef((props, ref) => {
return <Box ref={ref} {...props} />
})
<Button asChild>
<MyComponent> Click me </MyComponent>
</Button>