1. 배송 정보 입력
기능
주문하기 -> 배송지 입력, 결제
화면
주문 페이지 - /order
주문 완료 페이지 - /order/complete
배송지 정보 입력
간단히 받는 사람 이름, 주소, 전화번호를 입력 받는다.
데이터를 다룰 수 있게 'OrderFormStore를' 준비한다.
상세 주소가 아닌 상위 주소 지정시 우편번호를 함께 지정하게 한다.
@singleton()
@Store()
export default class OrderFormStore {
name = "";
address1 = "";
address2 = "";
postalCode = "";
phoneNumber = "";
get valid() {
return (
!!this.name.trim() &&
!!this.address1.trim() &&
!!this.address2.trim() &&
!!this.postalCode.trim() &&
!!this.phoneNumber.trim()
);
}
@Action()
changeName(name: string) {
this.name = name;
}
@Action()
changeAddress1(address1: string, postalCode: string) {
this.address1 = address1;
this.postalCode = postalCode;
}
@Action()
changeAddress2(address2: string) {
this.address2 = address2;
}
@Action()
changePhoneNumber(phoneNumber: string) {
this.phoneNumber = phoneNumber.replace(/[^0-9]/g, "");
} // 전화번호는 number 가 아닌 데이터는 입력받지 않는다.
}ShippingForm
데이터를 입력받는 ShippingForm에 주소 부분,.
보통 쇼핑몰에서 볼 수 있듯, 상위 주소를 readonly 처리 하는 부분이 있다.
말 그대로 readonly 하고싶기 때문.
아래처럼 TextBox 컴포넌트를 수정해준다.
우편 번호 검색
우편 번호 검색 기능을 사용하는 이유
주소는 외우지만 우편번호 외우는 사람이 적다.
더 중요한 건, 표준화된 주소를 얻기 위해서이다.
건물명으로 주소 찾기도 쉽고 좌우지간 사용자에게 편하다.
index.html 파일에 스크립트 태그를 추가한다
다음 문서에서 가져온 스크립트 코드는 기본적인 자바스크립트기 때문에
src/components/new-order/daum.postfode.d.ts 파일 생성해 타입 잡아준다.
전역으로 얻는 daum 객체의 타입을 알 수 있게 된다.
AddressSearch.tsx
kakao 우편번호 서비스 문서를 보면 역시 자바스크립트로 되어있다.
직접 DOM에 접근하게 되어있고, react에서는 ref를 사용해 직접 DOM에 접근할 수 있다.
컴포넌트랑 영원히 같이가는 상수같이 사용하거나
상태처럼 값이 변할때 리렌더링이 되지 않도록 한다.
여기까지 하면 order 페이지에서 바로 주소찾기 모달이 떠있다.
boolean으로 열고 닫고 처리를 해줘야한다.
useBoolean
usehooks-ts 의 useBoolean을 이용해 쉽게 구현할 수 있다.
외부 솔루션을 이용해 우편번호 찾기 기능을 쉽게 추가했다.
test
테스트 마지막에 I.wait(긴 시간) 줘서
테스트 이후 디버깅이 가능하도록 하는 꿀팁.
마지막이 아니더라도 특정 화면에서 멈추도록도 가능하다.
Last updated