React로 만드는 나만의 포켓몬 도감 GO Pokedex
React로 만드는 나만의 포켓몬 도감 GO Pokedex
React로 만드는 나만의 포켓몬 도감: GO Pokedex 프로젝트 소개
안녕하세요! 오늘은 React를 사용하여 만든 웹 기반 포켓몬 도감 프로젝트, GO Pokedex를 소개합니다. 이 프로젝트는 포켓몬 정보를 쉽게 검색하고 원하는 조건에 따라 필터링할 수 있는 기능을 제공합니다.
1. 프로젝트 개요
- 프로젝트명: GO Pokedex
- 목표: React를 활용하여 포켓몬 정보를 효과적으로 검색하고 필터링할 수 있는 웹 포켓몬 도감 구현
- 핵심 기능:
- 전체 포켓몬 목록 조회
- 이름, 타입, 약점 정보를 기반으로 한 검색 및 필터링 기능
2. 주요 기능 살펴보기
📖 포켓몬 목록 조회 (Pokedex.js)
- 데이터 로딩: 외부 JSON 데이터 파일(
pokedex.json)을Workspace API를 통해 비동기적으로 불러와 포켓몬 목록을 표시합니다. - 정보 표시: 각 포켓몬의 번호, 이름, 이미지, 타입, 약점 정보가 테이블 형태로 깔끔하게 제공됩니다. (
PokemonRow.js,Type.js) - 시각화: 테이블 구조를 사용하여 많은 양의 포켓몬 정보를 한눈에 보기 쉽게 구성했습니다.
// 예시: Pokedex.js에서 데이터 로딩 및 렌더링 componentDidMount() { fetch('path/to/pokedex.json') .then(response => response.json()) .then(data => this.setState({ pokemonData: data })); } render() { // ... pokemonData를 기반으로 PokemonRow 렌더링 ... } 🔍 검색 및 필터링 (Search.js)
원하는 포켓몬을 빠르게 찾을 수 있도록 다양한 검색 및 필터링 옵션을 제공합니다.
- 이름 검색: 입력창에 포켓몬 이름의 일부를 입력하면 해당 텍스트를 포함하는 포켓몬만 실시간으로 필터링됩니다. (
getPokemonByName로직) - 타입 필터:
react-select라이브러리를 활용하여 하나 또는 여러 개의 타입을 선택하면, 선택된 모든 타입을 가진 포켓몬만 필터링됩니다. (getPokemonByType로직) - 약점 필터: 타입 필터와 유사하게,
react-select를 통해 선택된 모든 약점을 가진 포켓몬만 필터링하여 보여줍니다. (getPokemonByWeak로직)
3. 기술 스택
이 프로젝트를 구현하는 데 사용된 주요 기술과 라이브러리입니다.
- Frontend: React.js, JavaScript (ES6+)
- Styling: CSS, Materialize CSS (
materialize-css) 프레임워크 - 상태 관리: React 컴포넌트 내부 상태 (
this.state,setState) - 데이터 Fetch: Browser Fetch API (외부 JSON 데이터 로딩)
- UI 라이브러리:
react-select(다중 선택 드롭다운 UI 구현) - 개발 환경: Create React App (
react-scripts)
4. 데이터 흐름
애플리케이션의 데이터 처리 과정은 다음과 같습니다.
- 데이터 로딩:
- 컴포넌트가 처음 렌더링될 때 (
componentDidMount또는useEffect), GitHub Raw URL 등 외부 경로에서pokedex.json(포켓몬 목록)과types.json(타입 정보) 데이터를 Fetch API를 통해 가져옵니다.
- 컴포넌트가 처음 렌더링될 때 (
- 상태 저장:
- 가져온 포켓몬 및 타입 데이터를 React 컴포넌트의
state에 저장합니다.
- 가져온 포켓몬 및 타입 데이터를 React 컴포넌트의
- UI 렌더링:
- 저장된
state데이터를 기반으로 전체 포켓몬 목록과 검색/필터 옵션(타입, 약점 드롭다운)을 화면에 렌더링합니다.
- 저장된
- 사용자 입력:
- 사용자가 이름 검색창에 텍스트를 입력하거나, 타입/약점 드롭다운에서 항목을 선택합니다.
- 상태 업데이트:
- 사용자 입력 값에 따라
state를 업데이트합니다. (예: 검색어, 선택된 타입/약점 배열)
- 사용자 입력 값에 따라
- UI 필터링 및 재렌더링:
showRow와 같은 필터링 함수가 업데이트된state값을 기준으로 화면에 표시할 포켓몬을 결정합니다.- 필터링된 결과만을 포함하는 포켓몬 목록이 화면에 다시 렌더링됩니다.
5. 화면 구성 (요약)
- 네비게이션 바 (
App.js,App.css): 상단에 프로젝트 제목(“GO Pokedex”)을 표시합니다. - 검색/필터 영역 (
Search.js): 포켓몬 이름을 입력할 수 있는 텍스트 필드와 타입 및 약점을 여러 개 선택할 수 있는 드롭다운 메뉴가 있습니다. - 포켓몬 목록 (
Pokedex.js,PokemonRow.js,Type.js): 검색 및 필터링 조건에 따라 동적으로 내용이 변경되는 포켓몬 정보 테이블입니다. 각 행은 포켓몬 한 마리의 정보를 담고 있습니다.
이 프로젝트는 React의 기본적인 상태 관리와 외부 데이터 연동, 그리고 라이브러리를 활용한 UI 구현을 연습하기에 좋은 예시가 될 수 있습니다. 감사합니다!
실행 결과
This post is licensed under CC BY 4.0 by the author.