제주항공을 모티브로 비행 티켓 예약 가능이 가능한 항공사 사이트를 구현 해보았다.
개발 인원: 프론트엔드 3명, 백엔드 2명
프론트엔드
백엔드
개발 기간: 2022.11.28 ~ 2022.12.09
useSearchParams()
를 통해 받아온다. 이 때 method(fetch의 두 번째 매개변수) 두 번째 fetch는 이 페이지(예약 페이지)에서 선택한 정보들을 다음 페이지인 booking-details 즉, 예약 확인 페이지로 정보를 넘기기 위해 사용한다. 두 번째 fetch에는 데이터를 담아 다음 페이지로 넘겨주어야 하기 때문에 useNavigate
를 변수 navigate에 담고, navigate의 두 번째 매개변수로 데이터(여기서는 state들)를 담아준다. (물론 첫 번째 매개변수에는 이동할 페이지의 path를 적어준다.) 그래서 다음과 같은 코드가 완성된다.navigate('/booking-details', { state: { arrivalSeat, departureSeat } })
replace()
메서드와 정규표현식을 사용하여 하이픈을 넣을 수 있게 코드를 짜보았다. 다음과 같은 코드가 만들어진다. (useEffect 안에 함수를 넣어야 하나, getUserInfo 함수가 길어졌기에 아래와 같이 useEffect 안에 함수를 넣어준다.) const getUserInfo = () => {
fetch('http://10.58.52.240:3000/booking-details', {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=utf-8',
authorization: localStorage.getItem('accessToken'),
},
})
.then(response => response.json())
.then(data =>
setUserInfo({
...data,
phoneNumber: data.phoneNumber
.replace(/\D/g, '')
.replace(
/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/,
'$1-$2-$3'
),
birth: data.birth.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3'),
})
);
};
useEffect(() => {
getUserInfo();
}, []);
useNavigate()
를 사용하였고, 두 번째 매개 변수로 아래와 같은 state를 담아 onClick 이벤트를 발생시켜서 다음 페이지로 넘겨주었다. <NextBtn
onClick={() =>
navigate('/Booking-confirm', {
state: { ...location.state, userInfo },
})
}
>
다음
</NextBtn>
""
빈값으로 설정한다. userInfo 중 gender만 제외하고 userInfo에 디스트럭처링 할당을 해 주고,