Nav Bar Opens All Menus Simultaneously Upon Clicking
This code snippet is my nav bar for an admin user. The intended behavior is that there are 3 icons (navigation menu, user menu, and manage button icons). The issue is that the drop
Solution 1:
All three <Menu...s have anchorEl={anchorEl} - so whatever is set on state setAnchorEl() will match all three.
Those <Menu parameters should be hard-coded with the desired match value.
Example:
const handleProfileMenuOpen = (event) => {
setAnchorEl('menuProfile');
};
...
const userMenu = (
<Menu
anchorEl={'menuProfile'} <== this is the important one... right now all 3 are set to whatever was just clicked
Solution 2:
function NavbarAdmin() {
const classes = navbarStyle();
const [anchorEl1, setAnchorEl1] = React.useState(null);
const [anchorEl2, setAnchorEl2] = React.useState(null);
const [anchorEl3, setAnchorEl3] = React.useState(null);
const isNavMenuOpen = Boolean(anchorEl1);
const isProfileMenuOpen = Boolean(anchorEl2);
const isManageMenuOpen = Boolean(anchorEl3);
const handleNavMenuOpen = (event) => {
setAnchorEl1(event.currentTarget);
}
const handleProfileMenuOpen = (event) => {
setAnchorEl2(event.currentTarget);
};
const handleManageMenuOpen = (event) => {
setAnchorEl3(event.currentTarget);
};
const handleNavMenuClose = () => {
setAnchorEl1(null);
};
const handleProfileMenuClose = () => {
setAnchorEl2(null);
};
const handleManageMenuClose = () => {
setAnchorEl3(null);
};
const navMenu = (
<Menu
anchorEl={anchorEl1}
anchorOrigin={{ vertical: 'top', horizontal: 'left' }}
keepMounted
transformOrigin={{ vertical: 'top', horizontal: 'left' }}
open={isNavMenuOpen}
onClose={handleNavMenuClose}
>
<MenuItem onClick={handleNavMenuClose}>Home</MenuItem>
<MenuItem onClick={handleNavMenuClose}>Movies</MenuItem>
<MenuItem onClick={handleNavMenuClose}>Concessions</MenuItem>
<MenuItem onClick={handleNavMenuClose}>Showtimes</MenuItem>
</Menu>
)
const userMenu = (
<Menu
anchorEl={anchorEl2}
anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
keepMounted
transformOrigin={{ vertical: 'top', horizontal: 'right' }}
open={isProfileMenuOpen}
onClose={handleProfileMenuClose}
>
<MenuItem onClick={handleProfileMenuClose}>Profile</MenuItem>
<MenuItem onClick={handleProfileMenuClose}>My account</MenuItem>
<MenuItem onClick={handleProfileMenuClose}>Sign Out</MenuItem>
</Menu>
);
const manageMenu = (
<Menu
anchorEl={anchorEl3}
anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
keepMounted
transformOrigin={{ vertical: 'top', horizontal: 'right' }}
open={isManageMenuOpen}
onClose={handleManageMenuClose}
>
<MenuItem onClick={handleManageMenuClose}>Movies</MenuItem>
<MenuItem onClick={handleManageMenuClose}>Seats</MenuItem>
</Menu>
);
Post a Comment for "Nav Bar Opens All Menus Simultaneously Upon Clicking"