1. 배송 정보 입력
1. 기능
🎯 어떤 순서로 기능을 만들 것인지는 비즈니스 우선 순위에 따라 결정
상품 목록 확인 ✅
상품 상세 정보 확인 ✅
장바구니에 상품 담기 ✅
로그인 ✅
로그아웃 ✅
회원 가입 ✅
주문 목록 확인 ✅
주문 상세 확인 ✅
주문하기 → 배송지 입력, 결제
2. 화면
홈 페이지 -
/상품 목록 페이지 -
/products상품 상세 페이지 -
/products/{id}장바구니 페이지 -
/cart로그인 페이지 -
/login회원 가입 페이지 -
/signup회원 가입 완료 페이지 -
/signup/complete주문 목록 페이지 -
/orders주문 상세 페이지 -
/orders/{id}주문 완료 페이지 -
/order/complete주문 페이지 -
/order
3. 주문 페이지
🎯 주문 페이지와 주문 완료 페이지를 추가해서 전체 흐름을 만들기
OrderPage 생성
OrderPage 생성로직 자체는 장바구니와 매우 유사함
OrderForm 컴포넌트 생성
OrderForm 컴포넌트 생성역시 장바구니와 유사
주소에
/order를 강제로 입력해서 들어오는 것은 고려하지 않음결제는 솔루션을 이용(추후 작업)
OrderCompletePage 생성
OrderCompletePage 생성SignupCompletePage와 마찬가지로 간단하게 구성
routes에 페이지 추가
CartView에 버튼 추가
CartView에 버튼 추가장바구니 페이지에서 주문 페이지로 갈 수 있도록 버튼 추가
4. 배송지 정보 입력
🎯 받는 사람 이름, 주소, 전화번호를 입력 받는 폼 구현하기
OrderFormStore를 만들어서 관련 정보를 다룰 수 있도록 준비주소는 크게 두 부분으로 나뉨 - 상위 주소, 상세 주소
상세 주소가 아닌 상위 주소를 지정할 때 우편번호를 함께 지정
OrderFormStore Hook 생성
지번/도로명 주소가 우편번호와 매칭되기 때문에 동시에 사용
전화번호는 숫자만 가져오도록 정규표현식 사용
useOrderFormStore Hook 생성
src/hooks
Store를 쓸 수 있는 Hook 생성
OrderForm에서 쓸 수 있는 ShippingForm 생성
OrderForm에서 쓸 수 있는 ShippingForm 생성TextBox에 readOnly 속성 추가
TextBox에 readOnly 속성 추가readOnly 속성을 추가하고 onChange를 옵셔널하게 만들기
OrderForm.tsx의 TODO: 배송지 입력에<ShippingForm />추가type에 tel 추가
5. 우편번호 검색
우편번호 검색 기능
주소는 외우지만 우편번호는 못 외우는 경우
정확히 표준화된 주소를 얻을 수 있음 ⭐️
key 발급 필요 없고 그냥 사용하면 됨
매우 편리
여기에서는 ssl 방식으로 처리할 것
index.html 파일에 스크립트 태그 추가
index.html 파일에 스크립트 태그 추가⚠️ script의 순서에 주의할 것 로딩이 먼저 완료될 수 있도록 위에 작성하기
타입 지정
전역으로 얻는 daum 객체의 타입을 알 수 있도록 daum.postcode.d.ts 파일 생성
components/new-order
팝업 모달로 사용할 경우 open 으로 바꾸면 됨
AddressSearch 컴포넌트 생성
AddressSearch 컴포넌트 생성우편번호 검색 모달(modal)을 보여주는 AddressSearch 컴포넌트 만들기
useRef 훅을 사용하면 DOM 객체에 직접 접근할 수 있음
내용이 바뀌어도 리렌더링 되지 않음
API 사용 시 이런 방법으로 구현하면 됨
폼의 바깥 부분을 누르면 close
ShippingForm에서 AddressSearch를 활용하도록 구현
ShippingForm에서 AddressSearch를 활용하도록 구현codecept를 이용한 팁
개발할 때 매번 배송 정보 입력 폼을 임의로 작성하는 것이 번거로움 💡 E2E 테스트로 모든 input을 채워넣고 마지막에 wait로 대기 시간을 길게 주면 그동안 페이지에서 개발자 도구를 열어 디버깅 하는 등의 행위를 할 수 있음
🚧 개발이 끝나면 삭제할 것
Last updated