2023.03.10.(금)
TIL Today I Learned
Good: 디테일페이지에서 삭제 모달이 나오는 것을 구현하였다. 그리고 삭제기능을 넣어야 하는데 너무 어렵다.
Bad: 아직도 할 게 많은데 벌써 발표 준비를 해야하니 정말 긴장된다.
3/8 (15시)1차 발표 영상 제출
3/8 (19시)브로셔 소스 제출
3/9 (12시)서면피드백-1차 발표영상
3/10 (19시) 최종 자료 제출
03/13(월) 발제 전 : 발표회 준비(발표 자료 준비 및 연습)
03/13(월) 오후 3시 : 최종 발표회 발제
최종 발표회 진행 방식 및 수료 후 취업 지원주차에 대한 발제가 진행됩니다.
03/13(월) 오후 6:00 최종 발표회 Gather 오픈
03/13(월) 오후 7:00~9:00 : 최종 발표회 행사 진행
03/13(월) 오후 9:30~10:00 : 수료식 진행
혼자 하다가 너무 어려워서 팀 대원에게 도움을 청했다.
DeletePostModal.tsx
const DeletePostModal = () => {
const [deletePostData, setDeletePostData] = useRecoilState(deleteAtom);
const { mutate: onDeleteData } = useMutation(deleteData);
const onClickDelete = async (data: any) => {
const imageRef = ref(storageService, `images/${data?.imgPath}`);
const docId: any = data?.id;
onDeleteData(docId, {
onSuccess: () => {
deleteObject(imageRef);
setDeletePostModal(!deletePostModal);
router.push('/main?city=제주전체');
queryClient.invalidateQueries('infiniteData');
},
onError(error) {
},
});
visibleReset();
};
return (
<div className="modalBody" onClick={(e) => e.stopPropagation()}>
<DeleteContainer>
<Text>게시물을 정말 삭제하시겠습니까?</Text>
<DeleteCancleButton
onClick={() => {
setDeletePostModal(!deletePostModal);
}}
>
취소
</DeleteCancleButton>
<PostDeleteButton onClick={() => onClickDelete(deletePostData)}>
게시물 삭제하기
</PostDeleteButton>
</DeleteContainer>
</div>
)
}
엄청 간단한데 나는 너무 어렵게 생각했다. 여기서 deletePostData
이것이 무엇인가?! onClickDelete
함수를 보면 된다. 클릭 시 사진이라 docId를 삭제하고 완료 시 메인페이지로 이동하는 것이다.
위치기반 사진 명소 공유 플랫폼
서비스 특징에 따른 기준
- 이미지 데이터를 많이 다룬다. → 이미지 최적화가 필요하다.
- 데이터 읽기가 많이 일어난다. → 캐싱, 효율성 있는 로직(필요한 데이터만 불러오는 등)이 필요하다.
- 제주도 한정으로 지도 서비스를 제공한다. → 보다 편리한 지도 서비스가 되어야한다.
많은 양의 이미지를 가져와서 발생한 문제였다. 이미지 파일 크기를 줄이고 최적화하는 작업이 필요했다.
nextjs
의 Image 컴포넌트 사용해 이미지를 읽을때 최적화를 진행했다. 그리고 로컬 이미지 확장자를 webp
로 바꾸고, browser-image-compression
를 사용해 이미지 파일 용량을 줄었다.
퍼포먼스 증가
- 최적화 이전
- 최적화 이후
클라이언트 단계에서 반복문을 실행해 발생한 문제였다. 페이지에 들어왔을때 반복문을 실행하고, state가 변할때에도 반복문을 실행한다.
useQuery의 select 옵션을 사용해 쿼리 단계에서 반복문을 실행했다. 코드 변경 후에는 state가 변할때 반복문을 실행하지 않았다. 이로써 state변화로 인한 불필요한 반복문 실행을 줄었다.
✅ 카테고리
✅ 컬렉션
✅ 지도 (kakao Map)
✅ 팔로잉/팔로우