포켓몬 도감 만들기
포켓몬 리스트와 나만의 포켓몬을 지정할 수 있는 어플리케이션
랜딩 페이지
메인 페이지
2024.08.21~ 2024.08.28
pokemonDex //
├─ public //
│ └─ icon //
│ └─ favicon.ico //
├─ src //
│ ├─ assets //
│ │ └─ img //
│ │ ├─ ball.png //
│ │ ├─ bg.jpeg //
│ │ ├─ deleteBall.png //
│ │ ├─ logo.png //
│ │ └─ pikachu.png //
│ ├─ components //
│ │ ├─ dashboard //
│ │ │ └─Dashboard.jsx //
│ │ ├─ pokemonCard //
│ │ │ └─PokemonCard.jsx //
│ │ ├─ pokemonDetail //
│ │ │ └─PokemonDetail.jsx //
│ │ └─ pokemonList //
│ │ └─PokemonList.jsx //
│ ├─ data //
│ │ └─ mock.js //
│ ├─ pages //
│ │ ├─ dex //
│ │ │ └─ Dex.jsx //
│ │ ├─ home //
│ │ │ └─Home.jsx //
│ │ └─ pokemonApi //
│ │ └─ API.bak //
│ ├─ redux //
│ │ ├─ config //
│ │ │ └─ configStore.js //
│ │ ├─ modules //
│ │ │ └─ pokemonReducer.js //
│ │ └─ slices //
│ │ └─ pokemonSlice.js //
│ ├─ shared //
│ │ ├─ layout //
│ │ │ └─Layout.jsx //
│ │ ├─ outlet //
│ │ │ └─WrapOutlet.jsx //
│ │ └─router //
│ │ └─ Router.jsx //
│ ├─ styles //
│ │ ├─ CommonStyle.js //
│ │ ├─LayoutStyle.js //
│ │ └─ reset.css //
│ ├─ App.jsx //
│ └─ index.jsx //
├─ .env //
├─ .gitignore //
├─ eslint.config.js //
├─ index.html //
├─ package.json //
├─ README.md //
├─ vite.config.js //
└─ yarn.lock //
Props drilling이란 무엇인가요?
리액트에서 상태나 데이터를 컴포넌트 트리의 깊숙한 하위 컴포넌트로 전달하기 위해, 여러 컴포넌트 계층을 거쳐 props를 전달하는 과정
Context API를 사용하여 props drilling을 어떻게 해결할 수 있었나요?
트리 구조의 상위에서 데이터를 사용하여, 하위 컴포넌트에서 필요한 데이터를 직접 가져와 사용. 중간 컴포넌트들이 불필요하게 데이터를 거치지 않고 데이터를 비교적 자유롭게 사용 함
이 과제에서 컴포넌트 구조를 어떻게 구성했나요? 그 이유는 무엇인가요?
따로 분리를 하려다 보니 이런식으로 흘러가게 되었는데 다음에는 DB나 이미지 같은 부분들은 public폴더에 따로 분리하고, 컴포넌트에 페이지와 하위 페이지의 구성을 나누어서 따로 폴더를 분리하는 게 좋을 것 같다. 폴더의 가지수가 많아지니 가독성도 떨어지고 찾는 것도 오히려 힘들다.
컴포넌트 분리가 코드의 가독성과 재사용성에 어떤 이점을 제공했나요?
반복 코드를 쉽게 삭제하고 수정할 수 있었으며, 필요한 부분만 독립적으로 수정하기 좋았다.