Implement a context menu with useContextMenu
mainTo use react-contexify, you need to define a unique MENU_ID, import the necessary components and the CSS file, and use the useContextMenu hook to trigger the menu.
- Define a
MENU_IDconstant. - Use
useContextMenu({ id: MENU_ID })to get theshowfunction. - Call
show({ event, props })inside your element'sonContextMenuhandler. - Define the menu structure using
<Menu>,<Item>,<Separator>, and<Submenu>components, ensuring the<Menu>has the sameidused in the hook.
import { Menu, Item, Separator, Submenu, useContextMenu } from 'react-contexify';
import 'react-contexify/ReactContexify.css';
const MENU_ID = 'blahblah';
function App() {
const { show } = useContextMenu({
id: MENU_ID,
});
function handleContextMenu(event){
show({
event,
props: {
key: 'value'
}
})
}
const handleItemClick = ({ id, event, props }) => {
switch (id) {
case "copy":
console.log(event, props)
break;
case "cut":
console.log(event, props);
break;
}
}
return (
<div>
<p onContextMenu={handleContextMenu}>lorem ipsum...</p>
<Menu id={MENU_ID}>
<Item id="copy" onClick={handleItemClick}>Copy</Item>
<Item id="cut" onClick={handleItemClick}>Cut</Item>
<Separator />
<Item disabled>Disabled</Item>
<Separator />
<Submenu label="Foobar">
<Item id="reload" onClick={handleItemClick}>Reload</Item>
<Item id="something" onClick={handleItemClick}>Do something else</Item>
</Submenu>
</Menu>
</div>
);
}