javascript - radix-ui/react-menubar: deschidere la trecerea mouse-ului?
Folosesc un Menubar de la radix-ui care funcționează bine! Menubar-ul se deschide folosind componenta Menubar.Trigger de la radix.
import * as Menubar from "@radix-ui/react-menubar";
<Menubar.Root
onValueChange={(value) => {
if (onOpenChange) onOpenChange(Boolean(value));
}}
>
<Menubar.Menu>
<div
className={`relative inline-block idle`}
>
<IconV2 />
</div>
<Menubar.Trigger>
<ChevronDown width={10} />
</Menubar.Trigger>
<Menubar.Portal>
<Menubar.Content align="start">
<Menubar.Item onClick={onClick}>
Option 1
</Menubar.Item>
<Menubar.Item onClick={onClick}>
Option 2
</MenubarItem>
</Menubar.Content>
</Menubar.Portal>
</Menubar.Menu>
</Menubar.Root>
Totuși, acesta nu este un component controlat - cum pot să-l deschid onHover pe declanșator?
Răspuns #1
Bună, iată soluția,
import { useState } from "react";
.........
const [open, setOpen] = useState(false);
..........
<Menubar.Root open={open} onOpenChange={setOpen}>
<Menubar.Trigger onMouseEnter={() => setOpen(true)} onMouseLeave={() => setOpen(false)}>
<ChevronDown width={10} />
</Menubar.Trigger>
........other code.......
Editat: Codul de mai sus are unele probleme, folosește acest lucru în schimb
import { useState } from "react";
..............other code........
const [open, setOpen] = useState(false);
.....
<div onMouseEnter={() => setOpen(true)} onMouseLeave={() => setOpen(false)}>
<Menubar.Root modal={false} open={open} onOpenChange={setOpen}>
.......other code same as yours...
</Menubar.Root>
</div>
......other code.....
