Jeremy-Kr/there-are

프로젝트 피드백 - 작성자: 류제천 튜터

Opened this issue · 3 comments

Overview

  1. 발표가 참 인상 깊습니다. 앱 컨셉과 앱의 필요성에 대해 잘 어필하셨습니다. 굿!
  2. 앱 제목이 정말 센스가 좋습니다.
  3. 다크모드 적용 굿!
  4. 스플래시 스크린 컨트롤 훌륭합니다.
  5. PR 템플릿 잘 적용해주셨습니다. 다음엔 깃헙의 project와 issue 기능도 함께 연계해서 프로젝트 관리 해보시면 더 좋겠습니다.
  6. 깃으로 버전관리를 체계적으로 잘하셨습니다 굿!
  7. 코드리뷰를 팀원간에 활발하게 하신 점 정말 좋습니다!

코드리뷰 코멘트는 아래에 남기겠습니다.

image
useQuery의 두 번째 인자인 queryFn의 형태는 () => Promise 입니다. fetch() 자체가 Promise 이기 때문에 이 경우 async await 키워드는 굳이 작성하지 않으셔도 좋습니다.

image
이벤트리스너 함수와 마찬가지로 setTimeout 도 마찬가지로 별도의 명령을 해주지 않으면 가비지콜렉팅이 되지 않아 실행 후에도 메모리에 계속 잔류하게 됩니다. 따라서 메모리 관리를 위해 아래와 같이 clearTimeout 으로 메모리에 잔류하고 있는 setTimeout을 제거해주는 작업을 해주시면 좋습니다.

useEffect(()=>{
 const id= setTimeout();
return () => {
  clearTimeout(id);
}
},[isFocus])

image
onSnapshot과 같은 이벤트리스너 함수를 다룰 때는 메모리 관리를 위해 useEffect나 useFocusEffect 안에서 return 으로 메모리에 잔류하고 있는 이벤트리스너를 제거해주는 습관을 들이시는 게 좋습니다. 그러려면 getToBeDetail 라는 별도의 함수를 별도로 만들지 않고 useEffect 안에 풀어쓰시고, 아래와 같은 형식으로 리팩토링 해주시면 좋습니다.

useEffect(()=>{
const unsubscribe = onSnapshot();
return unsubscribe;
},[])