NavLink 사용법

Bin2·2022년 7월 11일
0
post-custom-banner

React Router 에서 지원하는 기능 중 하나이다.
navigation menu, tab menu 등을 개발할 때 유용하게 사용할 수 있다.

기존의 <Link> 와 가장 큰 차이점은 클릭 시 다른 페이지로 이동시킬 뿐만 아니라
isActive 속성을 전달받아 현재 active된 요소를 선택하여 style 지정이나 className 지정을 할 수 있다는 점이다.

사용법은 간단하다. <Link> 와 같이 to 속성에 렌딩할 path 명을 전달하고, style 이나 className 을 지정할때는 콜백함수의 인자로 { isActive } 속성을 전달받으면 된다.

import { NavLink } from "react-router-dom";
import links from "../utils/links";

interface IProps {
  toggleSidebar: () => void;
}

interface ILinks {
  id: number;
  text: string;
  path: string;
  icon: JSX.Element;
}

const links: Array<ILinks> = [
  { id: 1, text: "stats", path: "/", icon: <IoBarChartSharp /> },
  { id: 2, text: "all jobs", path: "all-jobs", icon: <MdQueryStats /> },
  { id: 3, text: "add job", path: "add-job", icon: <FaWpforms /> },
  { id: 4, text: "profile", path: "profile", icon: <ImProfile /> },
];

const NavLinks: React.FC<IProps> = ({ toggleSidebar }) => {
  return (
    <div className="nav-links">
      {links.map((link) => {
        const { id, text, path, icon } = link;
        return (
          <NavLink
            to={path}
            className={({ isActive }) =>
              isActive ? "nav-link active" : "nav-link"
            }
            key={id}
            onClick={toggleSidebar}
          >
            <span className="icon">{icon}</span>
            {text}
          </NavLink>
        );
      })}
    </div>
  );
};
profile
Developer
post-custom-banner

0개의 댓글