다음으로 Categories에서는 props로 전달받은 onSelect를 각 Category 컴포넌트의 onClick으로 설정해 주고, 현재 선택된 카테고리 값에 따라 다른 스타일을 적용시켜 보세요.

    components/Categories.js

    import React from 'react';
    import styled, { css } from 'styled-components';
     
    const categories = [
      (...)
    ];
     
    const CategoriesBlock = styled.div`
      (...)
    `;
     
    const Category = styled.div`
      font-size: 1.125rem;
      cursor: pointer;
      white-space: pre;
      text-decoration: none;
      color: inherit;
      padding-bottom: 0.25rem;
     
      &:hover {
        color: #495057;
      }
     
      ${props =>
        props.active && css`
          font-weight: 600;
          border-bottom: 2px solid #22b8cf;
          color: #22b8cf;
          &:hover {
            color: #3bc9db;
          }
      `}
     
      & + & {
        margin-left: 1rem;
      }
    `;
    const Categories = ({ onSelect, category }) => {
      return (
        <CategoriesBlock>
          {categories.map(c => (
            <Category
              key={c.name}
              active={category === c.name}
              onClick={() => onSelect(c.name)}
            >
              {c.text}
            </Category>
          ))}
        </CategoriesBlock>
      );
    };
     
    export default Categories;

     

    다음과 같이 선택된 카테고리가 청록색으로 보이나요? 다른 카테고리도 클릭해 보세요. 잘 선택되나요?

    ▲ 그림 14-12 카테고리 선택 시 active 스타일 적용

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.