다음으로 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 스타일 적용