Skip to main content


To use the Hook, first call it, telling it how many items your menu will have:

const { buttonProps, itemProps, isOpen } = useDropdownMenu(numberOfItems);

Take the buttonProps object and spread it onto a button:

<button {...buttonProps}>Example</button>

Create the menu with the role='menu' property and spread itemProps[x] onto each item:

<div className={isOpen ? 'visible' : ''} role='menu'>
<a {...itemProps[0]} href=''>Regular link</a>
<a {...itemProps[1]} onClick={handleClick}>With click handler</a>

Style the menu based on whether the visible class name is present or not. For example, something like:

div[role='menu'] {
visibility: hidden;
div[role='menu'].visible {
visibility: visible;