14.7.3 Categories에서 NavLink 사용하기
이제 Categories에서 기존의 onSelect 함수를 호출하여 카테고리를 선택하고, 선택된 카테고리에 다른 스타일을 주는 기능을 NavLink로 대체해 보겠습니다. div, a, button, input처럼 일반 HTML 요소가 아닌 특정 컴포넌트에 styled-components를 사용할 때는 styled(컴포넌트이름)``과 같은 형식을 사용합니다.
components/Categories.js
import React from 'react'; import styled from 'styled-components'; import { NavLink } from 'react-router-dom'; const categories = [ (...) ]; const CategoriesBlock = styled.div` (...) `; const Category = styled(NavLink)` font-size: 1.125rem; cursor: pointer; white-space: pre; text-decoration: none; color: inherit; padding-bottom: 0.25rem; &:hover { color: #495057; } &.active { font-weight: 600; border-bottom: 2px solid #22b8cf; color: #22b8cf; &:hover { color: #3bc9db; } } & + & { margin-left: 1rem; } `; const Categories = () => { return ( <CategoriesBlock> {categories.map(c => ( <Category key={c.name} activeClassName="active" exact={c.name === 'all'} to={c.name === 'all' ? '/' : `/${c.name}`} > {c.text} </Category> ))} </CategoriesBlock> ); }; export default Categories;