2022/04/22 useLocation을 이용해서 스타일 활성화하기
2022. 4. 22. 12:55ㆍProject : 새 친구 여행 (Bird Buddy Trip)
각 메뉴를 fontawesome classname과 location 객체의 배열로 만든 다음
메뉴의 location과 useLocation의 pathname이 일치할 경우
styledcomponent에서 color로 props를 내려준 isActive 속성을 활성화시킨다.
import styled from 'styled-components';
import { useLocation, useNavigate } from 'react-router-dom';
interface isActiveProp {
isActive: boolean;
}
const Container = styled.nav`
height: 5rem;
position: fixed;
bottom: 0;
max-width: 768px;
width: 100%;
background-color: #007580;
`;
const NavMenu = styled.ul`
display: flex;
align-items: center;
justify-content: space-around;
padding: 1.5rem 0;
margin: 0;
`;
const NavMenuList = styled.li<isActiveProp>`
font-size: 2rem;
color: ${(props) => (props.isActive ? '#fed049' : '#d8ebe4')};
display: flex;
cursor: pointer;
`;
const DownNav = () => {
const navigate = useNavigate();
const { pathname } = useLocation();
const menus = [
{ className: 'fa-solid fa-house', location: '/main' },
{ className: 'fa-solid fa-pen-to-square', location: '/makepost' },
{ className: 'fa-solid fa-comments', location: '/chatlist' },
{ className: 'fa-solid fa-user', location: '/mypage' },
];
const handleMenuClick = (location: string) => {
navigate(location);
};
return (
<Container>
<NavMenu>
{menus.map((menu, idx) => {
return (
<NavMenuList key={idx} isActive={pathname === menu.location} onClick={() => handleMenuClick(menu.location)}>
<i className={menu.className}></i>
</NavMenuList>
);
})}
</NavMenu>
</Container>
);
};
export default DownNav;
참고자료 :
https://developeritchaeyachae.tistory.com/156
[React/styled-components] 네이비게이션 바 클릭시 밑줄 혹은 bold 효과 주는 간단한 방법
이전 프로젝트에서 하드 코딩식으로 구현했었는데, 이번 과제에서는 좀더 효율적으로 구현하여 리뷰를 남긴다. 두가지 방법이있다. 1. 네비게이션바를 이용하여 네비게이션바와 endpoint부분이
developeritchaeyachae.tistory.com
'Project : 새 친구 여행 (Bird Buddy Trip)' 카테고리의 다른 글
| 2022/04/28 CSS checked 속성 (0) | 2022.04.28 |
|---|---|
| 2022/04/22 백그라운드 이미지 특정 개수 만큼 넣기 (0) | 2022.04.22 |
| 2022/04/22 color palett 정하기 (0) | 2022.04.22 |
| 2022/04/21 styled components로 전역 스타일 관리 (0) | 2022.04.21 |
| 2022/04/19 와이어프레임 작성 (0) | 2022.04.19 |