드디어 위코드의 마지막 프로젝트,
STAWEFOLIO를 통해 동기들과의 마지막을 마무리 지었다 !
Notion & Trello & Gitbook
Planning Meeting
하나의 Sprint가 시작되는 매주 월요일마다 Trello를 사용하여 해당 Sprint때의 목표를 설정하였다.
Daily Standup Meeting
아침 10시마다 전날의 개발진척도와 오늘의 목표, blocker들을 공유하였다.
Retrospective Meeting
최종발표 날 두번의 Sprint동안의 KPT회고를 통한 회고를 진행하였다.
standup meeting 10분컷
기술 공유
datepicker라이브러리는 input창에 클릭 시 calendar가 띄워지는 형식이다. 이 때의 Input창을 사용자가 직접 custom할 수도 있는데 그 때 forwardRef를 통해 DOM요소에 접근할 수 있다.
ref
props는 map의 key Prop처럼 특수한 목적으로 사용되고 그 때 forwardRef를 통해 외부에서 받은 ref prop으로 부모 컴포넌트에서 해당 컴포넌트 엘리먼트에 직접 접근할 수 있다.
👇 /src/components/DayPicker/CustomInput.js
const CustomInput = forwardRef(({ value, onClick }, ref) => {
//...codes
return (
<InputButton onClick={onClick} ref={ref}>
{value === ''
? checkInDate.length === 0 && checkOutDate.length === 0
? '날짜를 입력해주세요.'
: checkInDate + ' - ' + checkOutDate
: value + ' | ' + days + '박'}
</InputButton>
);
});
인원별 필터링을 구현할 때 인원을 조절하는 훅을 만들어 인원수를 조절하는 기능만 담당하도록 구현하였다. 그럼 인원수를 조절하는 방식이나 값을 변경해야 하는 경우가생기면 해당 훅에서만 변경해주면 된다.
👇 /src/pages/RoomList/DropDown/People.js
const useCounter = () => {
const [searchParams] = useSearchParams();
const [quantity, setQuantity] = useState(
searchParams.getAll('numberOfGuests').length === 0
? 0
: searchParams.getAll('numberOfGuests')
);
const plusQuantity = () => {
setQuantity(quantity > 9 ? 10 : quantity + 1);
};
const minusQuantity = () => {
setQuantity(quantity < 1 ? 0 : quantity - 1);
};
return { quantity, plusQuantity, minusQuantity };
};
ㄴ💡 더 자세한 코드들이 궁금하시다면?
상태관리의 부재
데드라인에 쫓기기
조금 더 사용자의 입장에서 생각해보자.
사용자는 내가 코드를 어떻게 치는지, 클린코드인지 관심도 없고 알 수도 없다. 그냥 UI가 직관적이고 편리하고 좋으면 끝인거다.
사용자 입장에서 이 페이지에 이렇게하면 더 편리할까?라고 생각을 해보자.