React, styled-css, Figma를 사용하여 쇼핑몰을 만들었습니다.

실제 코드와 변수명, 함수명 등은 조금씩 다를 수 있습니다.

https://github.com/1two13/shopping-mall

🧾 프로젝트 명세서

🖼 와이어 프레임

🧐 API 구성

📝 해야할 일

💡 구현하고 싶은 것

📌 파일 구조 나누기

📌 모든 페이지에서 공통으로 사용하는 컴포넌트 만들기

📁 src/common/components/TopFixedBar.js (상단 탑 바)

🍔 햄버거 메뉴 만들기

📁 src/common/components/MenuBar.js (상단 메뉴 바)

📌 홈 페이지(메인)

📽 슬라이드 애니메이션 만들기 (BigAnimatePic 컴포넌트)

🛠 API 연동하여 슬라이드 이미지 보여주기

🗂 상품 리스트 보여주기 + 순위 매기기

ㄴ 🚨 코드 1차 수정

💬 상품명이 길때 말줄임표 사용하기

📌 상품 상세 페이지

💫 홈 페이지에서 상품 사진 클릭 했을 때 상품 상세 페이지 컴포넌트로 이동하기

🛒 customSelect 만들기

🛠 API 연동하기

ㄴ 🚨 코드 1차 수정

➕ 선택된 옵션 보여주기 + 이전에 선택한 옵션과 다른 옵션이 선택되면 새로운 옵션도 추가로 같이 보여주기

💲 수량 선택 가능하게 하기 + 수량에 따라 가격 다르게 보여주기

🗑 X 버튼 클릭했을 때 선택된 박스 삭제하기

⏪ 옵션이 모두 선택되면 옵션 박스를 처음으로 리셋하기

💲 총 상품 금액 보여주기

🚨 버튼 클릭했을 때 alert 알림 보여주기

⬆️ 홈에서 상품 사진 클릭했을 때 스크롤 위치 처음으로 만들기

📌 결제 페이지

🏰 localStorage를 사용하여 상품 상세 페이지에서 선택한 값 가져오기

🔢 input에 숫자만 입력시키기

⛔️ input 글자 수 제한시키기

🔽 select 만들기

🎨 버튼 박스 클릭했을 때 색상 변경하기

📌 마이 페이지

💫 상단 바에서 사람 아이콘 클릭 했을 때 마이 페이지로 이동하기

🏰 localStorage에서 가져온 값으로 화면에 데이터 표시하기

📌 로그인

🌐 context로 글로벌하게 상태관리 하기

🔐 로그인이 필요한 버튼을 클릭했을 때 로그인이 되어 있는 상태라면 결제 페이지로 이동시키고, 로그인이 되어 있지 않은 상태라면 네이버 로그인 창 보여주기

👌🏻 로그인에 성공했을 때 보여줄 Callback 컴포넌트 생성하기

👋🏻 결과

❓ 배운 점 / 어려웠던 점

🙋🏻‍♀️ 프로젝트 설계서 작성 후

🙋🏻‍♀️ 리덕스를 사용하지 않고 props를 여기저기 넘겨준 점

🙋🏻‍♀️ 무한 렌더링 해결하기

🙋🏻‍♀️ React LifeCycle

🙋🏻‍♀️ 리엑트에 Font Awesome 아이콘 적용하는 방법

🙋🏻‍♀️ Reset CSS 적용하는 방법

🙋🏻‍♀️ useSearchParams vs useParams

🙋🏻‍♀️ localStorage의 장점과 단점