Honeycomb

use-portal

Since: ver.2.4.0 Returns an existing or newly created Element with the given id, to be used as the container for the createPortal API.

With a pre-existing Element

If the hook finds an element with the given ID, it returns the element.

Inspect the code to find the portal content inserted in the yank div.

import { createPortal } from 'react-dom';
import { usePortal } from '@flixbus/honeycomb-react';

const ExamplePortal = ({ portalId, children }) => {
  const container = usePortal(portalId);

  return createPortal(children, container);
}

<>
  <div id="yank"></div>
  <ExamplePortal portalId="yank">
    Hi there!
  </ExamplePortal>
</>

Without a pre-existing Element

If the hook can't find an element with the given ID: creates a new <div> with the given ID and then appends it to the end of document.body.

Inspect the code and go to the end of the document to find a div with an id yoink.

import { createPortal } from 'react-dom';
import { usePortal } from '@flixbus/honeycomb-react';

const ExamplePortal = ({ portalId, children }) => {
  const container = usePortal(portalId);

  return createPortal(children, container);
}

<ExamplePortal portalId="yoink">
  Hello!
</ExamplePortal>