Closed SEMINSEMINSEMIN closed 1 year ago
Branch issue-20 created for issue: [ETC] 공통 컴포넌트 추가 - 하단 탭 바
import React, { useLayoutEffect, useState, useRef } from "react";
import { useEffect } from "react";
import { StyledLink } from "./navBarItem.style";
export default function NavBarItem({ linkSrc, iconSrc, navTxt, currentPath }) { const [isActivated, setIsActivated] = useState(false);
// 처음 마운트 될 때 브라우저에 그려진 후 딱 한 번실행
useEffect(() => {
console.log(currentPath === linkSrc);
if (currentPath === linkSrc) {
// 페이지가 그려진 후 만약 현재 페이지와 링크가 연결된 url이 같다면
// isActivated를 true로
setIsActivated(true);
}
}, []);
return (
{/* isActivated가 true라면 activated 클래스 */}
<StyledLink
to={linkSrc}
icon={iconSrc}
className={isActivated ? "activated" : ""}
>
{navTxt}
</StyledLink>
);
}
* 조건부 렌더링을 이용해 해결: https://github.com/nailedReact/react-app/pull/30
&::before {
content: "";
position: absolute;
top: 12px;
left: 50%;
transform: translateX(-50%);
width: 24px;
height: 24px;
background: ${(props) => `url(${props.icon.basic}) no-repeat`};
background-size: contain;
}
&.activated::before {
content: "";
position: absolute;
top: 12px;
left: 50%;
transform: translateX(-50%);
width: 24px;
height: 24px;
background: ${(props) => {
return `url(${props.icon.filled}) no-repeat`;
}};
background-size: contain;
}
다음과 같이 해결: 7f0dec52af79e892e768784846da2b8bdbd8a9ee
공통 컴포넌트 추가 - 하단 탭 바
useEffect를 이용했는데 useLayoutEffect를 사용하는게 더 나을지 고민됩니다.→ 조건부 렌더링을 이용해 해결