햅삐햅삐한 MBTI 테스트 페이지
24.09.05 ~ 24.09.10
mbti
├─ public
│ ├─ icons
│ │ └─ icon.png
│ ├─ npm.js
│ └─ vite.svg
├─ README.md
├─ src
│ ├─ App.jsx
│ ├─ assets
│ │ ├─ data
│ │ │ ├─ descriptions.js
│ │ │ ├─ images.js
│ │ │ ├─ maintext.js
│ │ │ └─ questions.js
│ │ ├─ images
│ │ │ ├─ bg.png
│ │ │ └─ image1.png
│ │ └─ styles
│ │ ├─ index.css
│ │ └─ layout.css
│ ├─ components
│ │ ├─ common
│ │ │ ├─ Footer.jsx
│ │ │ ├─ Header.jsx
│ │ │ ├─ Layout.jsx
│ │ │ ├─ Nav.jsx
│ │ │ └─ ui
│ │ │ ├─ Article.jsx
│ │ │ ├─ AuthForm.jsx
│ │ │ ├─ Button.jsx
│ │ │ ├─ Input.jsx
│ │ │ ├─ NavLink.jsx
│ │ │ └─ TextBox.jsx
│ │ ├─ pages
│ │ │ ├─ Home.jsx
│ │ │ ├─ Login.jsx
│ │ │ ├─ Profile.jsx
│ │ │ └─ Signup.jsx
│ │ ├─ shared
│ │ │ ├─ ProtectedRoute.jsx
│ │ │ └─ Router.jsx
│ │ └─ test
│ │ ├─ TestForm.jsx
│ │ ├─ TestPage.jsx
│ │ ├─ TestResult.jsx
│ │ ├─ TestResultItem.jsx
│ │ ├─ TestResultList.jsx
│ │ └─ TestResultListHub.jsx
│ ├─ core
│ │ ├─ api
│ │ │ ├─ auth.js
│ │ │ └─ testResults.js
│ │ ├─ hooks
│ │ │ ├─ useAuth.js
│ │ │ └─ useTest.js
│ │ ├─ instance
│ │ │ └─ axiosInstance.js
│ │ ├─ stores
│ │ │ ├─ useAuthStore.js
│ │ │ └─ useTestStore.js
│ │ └─ utils
│ │ └─ calculateMBTI.jsx
│ └─ index.jsx
├─ yarn.lock
├─ index.html
├─ .gitignore
├─ .prettierrc
├─ package.json
├─ vite.config.js
├─ eslint.config.js
├─ postcss.config.js
└─ tailwind.config.js
문제 | 원인 | 해결 |
---|---|---|
로그인 후 새로고침을 하면 로그인이 풀리는 이슈 | Access Token이 새로고침 시 사라지는 문제가 발생하여 생기는 이슈 | 유저 정보를 저장하고 나서, useAuthStore.js에서 사용자 정보를 저장하고 로그인시 초기값을 localStorage에 저장하고 가지고 오는 것으로 해결 |
닉네임 바꾸고 나서 바로 메인 페이지에 적용되지 않는 이슈 | 닉네임 바꿀 때 localstorage에 객체 병합 되지 않고 사라지는 이슈 | 닉네임 업데이트 하는 상태관리를 useAuthStore에 따로 제작하여 수정된 값을 받아 zustand에 다시 넘기게 처리 |
TestResult 페이지 테스트 결과 상태관리 및 분리 도중 결과보기 페이지를 클릭시 다른사람의 결과 페이지들이 뜨지 않는 상황 발생 | TestPage의 navigate에서 state: {} 안에 결과 정보를 담아 제출 한 채로 이어져 갔기 때문에 발생한 에러 | location.state로 데이터를 넘기지 않고 상태관리를 통해 결과 페이지 이동 처리를 위해 zustand에 상태 저장 |
역시 하나를 알려줘도 반도 못떠먹는 나는.. 이번 프로젝트 전체 프로젝트의 tanstack처리를 완료하지 못하고 props 장인이 되어 버렸다. 그래도 회원가입 CRUD는 tanstack처리와 zustand 처리도 해서 다행이다.. zustand의 persist는 로컬스토리지에 쉽게 저장 할 수 있는 확장기능인데 확실히 로그인에서 하나하나 스토리지에 저장하다가 저렇게 쓰니까 너무 편했다. 아아- 상태관리가 이렇게 어려울 줄이야. 토큰 만료 시간도 지정하고 tailwind의 확장 기능도 써보고, 개인 커스텀 폰트 같은 것도 써보긴 했으나 아직 실무에 갈 수는 없는 수준이라 보이기 부끄럽다. 이번 과제가 끝나면 모바일 반응형도 대응 해야하고 test 부분 tanstack처리도 해야하고, 바쁘다 바빠-