이번 글에서는 포켓몬 도감 애플리케이션의 컴포넌트 구성과 라우팅을 다룹니다. 이 과정은 애플리케이션의 주요 기능을 구축하는 기본 단계입니다.
App.jsx
에서 React Router를 사용하여 네비게이션을 설정합니다. 메인 페이지, 즐겨찾기 페이지, 포켓몬 상세 페이지 등 여러 페이지를 연결합니다.
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Main from './pages/Main';
import Detail from './pages/Detail';
import Search from './pages/Search';
import Favorite from './pages/Favorite';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Main />} />
<Route path="/detail/:pokemonId" element={<Detail />} />
<Route path="/search" element={<Search />} />
<Route path="/favorite" element={<Favorite />} />
</Routes>
</BrowserRouter>
);
}
export default App;
아래는 Card.jsx의 예시 코드입니다. 이 컴포넌트는 포켓몬의 이미지를 카드 형태로 보여주고, 클릭하면 상세 페이지로 이동하도록 설계되었습니다.
import styled from 'styled-components';
import { useNavigate } from 'react-router-dom';
import FavoriteButton from './FavoriteButton';
const CardContainer = styled.div`
width: 180px;
background-color: #f0f0f0;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
cursor: pointer;
text-align: center;
transition: transform 0.3s;
&:hover {
transform: scale(1.05);
}
`;
function Card({ pokemon }) {
const navigate = useNavigate();
return (
<CardContainer onClick={() => navigate(`/detail/${pokemon.id}`)}>
<img src={pokemon.front} alt={pokemon.name} />
<div>{pokemon.name}</div>
<FavoriteButton pokemonId={pokemon.id} />
</CardContainer>
);
}
export default Card;
여기까지 애플리케이션의 컴포넌트 구성과 기본적인 라우팅 설정을 완료했습니다. 각 컴포넌트를 독립적으로 만들어 유지보수를 쉽게 하고, React Router를 통해 사용자에게 여러 페이지로 이동하는 경험을 제공했습니다. 다음 파트에서는 Redux Toolkit을 사용하여 상태 관리를 구현하는 방법을 살펴보겠습니다.