💡 기업 과제 + 팀 프로젝트
/// useRegistration.ts
const handleReservation = (
event: React.FormEvent<HTMLFormElement>,
globalAtom: DefaultType[],
selectDate: string,
reserveHandler: () => void
) => {
event.preventDefault();
for (let i = 0; i < globalAtom.length; i++) {
const { user_name, user_phone, booking_date, booking_time } =
globalAtom[i];
if (booking_date === selectDate && booking_time === time) {
alert(`${time}에는 예약할 수 없습니다. \n다른 시간을 선택해 주세요.`);
return;
}
if (user_name === values.name && user_phone === values.phone) {
alert(`${values.name}님은 중복 예약입니다.`);
return;
}
}
const userInfo = {
id: 220181,
user_name: values.name,
user_phone: values.phone,
booking_date: selectDate,
booking_time: time,
categories: category,
};
setUser(prev => [...prev, userInfo]);
alert(`${values.name}님 예약 완료되셨습니다!`);
reserveHandler();
};
<SelectBox
title="예약 종류"
option={['진료', '검진', '기타']}
handleCategory={handleCategory}
category={category}
/>
<SelectBox
title="시간 선택"
option={TIME_DATA}
handleTime={handleTime}
time={time}
/>
const showOption = (event: React.MouseEvent<HTMLElement>) => {
event.stopPropagation();
event.preventDefault();
const optionText = String(event.currentTarget.innerText);
handleCategory && handleCategory(optionText);
handleTime && handleTime(optionText);
setToggle(!toggle);
};
<OptionContent isShow={!toggle}>
...옵션 리스트
</OptionContent>
//styled-components
const OptionContent = styled.div<{ isShow: boolean }>`
display: ${props => (props.isShow ? 'none' : 'block')};
width: 100%;
border-radius: 4px;
line-height: 45px;
box-shadow: 0 10px 30px rgba(30, 30, 30, 0.1);
background-color: ${({ theme }) => theme.colors.white};
`;
팀 프로젝트로 3일 동안 처음 접해보는 타입스크립트와 Recoil를 사용하여 병원예약시스템을 구현해 보았다. 헷갈려서 머리를 쥐어뜯었지만 새롭게 배워가는데 재미있었다. 좋은 팀원분들을 만나 많이 배울 수 있어서 고마웠고 더 열심히 공부해야겠다는 생각이 들었다😂