반응형

Appbar링크관련해서 어디 나와있지않은데 일단 구현자체는 성공
이미만들어저 있는소스에다가
const pages = ['index', 'index2', 'page','page2'];
const settings = ['Profile', 'Account', 'Dashboard', 'Logout'];
const links = ['/','/index2','/page','/page2']
이와같이 선언되어있는 Appbar에다가 links라는 배열을 하나 만들어주고 라우터 주소를 넣어줬다.
<Box sx={{ flexGrow: 1, display: { xs: 'none', md: 'flex' } }}>
{pages.map((page,i) => (
<Link href={links[i]}>
<Button
key={page}
onClick={handleCloseNavMenu}
sx={{ my: 2, color: 'white', display: 'block' }}
>
{page}
</Button>
</Link>
))}
</Box>
그리고 이와같이 Appbar안에있는 Button을 Link로 감싸주고 map함수안에 인덱스를 넣어줘
Links[i]의 형태로 주소를 사용할 수 있게만들어서 구현했다. 이방법이 맞나 싶긴하지만 정상적으로 잘되기때문에
다음에 다시 이용해보자
import Link from "next/link";
import { useRouter } from "next/router";
import * as React from 'react';
import AppBar from '@mui/material/AppBar';
import Box from '@mui/material/Box';
import Toolbar from '@mui/material/Toolbar';
import IconButton from '@mui/material/IconButton';
import Typography from '@mui/material/Typography';
import Menu from '@mui/material/Menu';
import MenuIcon from '@mui/icons-material/Menu';
import Container from '@mui/material/Container';
import Avatar from '@mui/material/Avatar';
import Button from '@mui/material/Button';
import Tooltip from '@mui/material/Tooltip';
import MenuItem from '@mui/material/MenuItem';
const pages = ['index', 'index2', 'page','page2'];
const settings = ['Profile', 'Account', 'Dashboard', 'Logout'];
const links = ['/','/index2','/page','/page2']
// Link도 배열로 넣어줘야할거같은데...?
// pages랑 파일이름 똑같이하면 문제없겠지만 하나더만들면그만
export default function NavBar() {
const router = useRouter();
// 여기부터 Mui Navbar
const [anchorElNav, setAnchorElNav] = React.useState(null);
const [anchorElUser, setAnchorElUser] = React.useState(null);
const handleOpenNavMenu = (event) => {
setAnchorElNav(event.currentTarget);
};
const handleOpenUserMenu = (event) => {
setAnchorElUser(event.currentTarget);
};
const handleCloseNavMenu = () => {
setAnchorElNav(null);
};
const handleCloseUserMenu = () => {
setAnchorElUser(null);
};
//
return (
<AppBar position="static" >
<Container maxWidth="xl">
<Toolbar disableGutters>
<Typography
variant="h6"
noWrap
component="div"
sx={{ mr: 2, display: { xs: 'none', md: 'flex' } }}
>
LOGO
</Typography>
<Box sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }}>
<IconButton
size="large"
aria-label="account of current user"
aria-controls="menu-appbar"
aria-haspopup="true"
onClick={handleOpenNavMenu}
color="inherit"
>
<MenuIcon />
</IconButton>
<Menu
id="menu-appbar"
anchorEl={anchorElNav}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left',
}}
keepMounted
transformOrigin={{
vertical: 'top',
horizontal: 'left',
}}
open={Boolean(anchorElNav)}
onClose={handleCloseNavMenu}
sx={{
display: { xs: 'block', md: 'none' },
}}
>
{pages.map((page) => (
<MenuItem key={page} onClick={handleCloseNavMenu}>
<Typography textAlign="center">
{page}
</Typography>
</MenuItem>
))}
</Menu>
</Box>
<Typography
variant="h6"
noWrap
component="div"
sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }}
>
LOGO
</Typography>
<Box sx={{ flexGrow: 1, display: { xs: 'none', md: 'flex' } }}>
{pages.map((page,i) => (
<Link href={links[i]}>
<Button
key={page}
onClick={handleCloseNavMenu}
sx={{ my: 2, color: 'white', display: 'block' }}
>
{page}
</Button>
</Link>
))}
</Box>
<Box sx={{ flexGrow: 0 }}>
<Tooltip title="Open settings">
<IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}>
<Avatar alt="Remy Sharp" src="/static/images/avatar/2.jpg" />
</IconButton>
</Tooltip>
<Menu
sx={{ mt: '45px' }}
id="menu-appbar"
anchorEl={anchorElUser}
anchorOrigin={{
vertical: 'top',
horizontal: 'right',
}}
keepMounted
transformOrigin={{
vertical: 'top',
horizontal: 'right',
}}
open={Boolean(anchorElUser)}
onClose={handleCloseUserMenu}
>
{settings.map((setting) => (
<MenuItem key={setting} onClick={handleCloseUserMenu}>
<Typography textAlign="center">{setting}</Typography>
</MenuItem>
))}
</Menu>
</Box>
</Toolbar>
</Container>
</AppBar>
);
}
AppBar API - MUI
API documentation for the React AppBar component. Learn about the available props and the CSS API.
mui.com
반응형
'웹개발정보' 카테고리의 다른 글
axios CORS 오류 (0) | 2022.03.25 |
---|---|
fontawesome(폰트어썸) React와 Next.js에서 사용하기 (0) | 2022.03.18 |
깃랩에서 깃허브로 이사하기 (0) | 2022.03.02 |
openVidu (Send text messages between users) (0) | 2022.02.10 |
웹디자인 관련 추천사이트 (0) | 2022.02.10 |