요점

  1. 잘못된 타입 또는잘못된 값으로 변경되는 Screen 또는 component 위치를 알려줘야합니다.

⇒ console.group/console.assert를 활용해서 잘못된 값일 경우에만 들여쓰기 후 로그를 출력합니다.

예시) userData.user.nickname type가 number일 경우

       `[TypeErr] userData.user.nickname is number, not string`
  1. 디버깅용 로그를 출력합니다.

⇒ console.group/console.debug 을 활용하여 Recoil 내부에서 dev 변수로 변수의 변경 변수와 스크린/컴포넌트명을 들여쓰기 후 모두 출력할 있도록 합니다.

       `[Debug] userData.user.nickname changed "asd" to "aa" in MyScreen`
  1. **console.table() 를 통해 객체는 표로 표현해줍니다.**
  2. renderTime 변수가 true일 때, console.count() / console.time() 를 통해 fetch 시간 및 렌더링 시간을 구해줍니다
  3. 반환값 변수명을 통일 시켜줍니다.

⇒ 에시) user_id → id //owner_id → id// feed_image → image // src/Model에 정의해놓습니다.

  1. useFetch를 통해 해당화면 focus (또는 특정 조건:새로고침 등) 이 발생하면 fetch 후 원형을 전역 state로 update

Recoil 상태관리할 전역state 변수

  1. 내 유저 데이터
  2. 투데이미션리스트
  3. 동네LocalScreen의 모든 탭 데이터List
  4. 한번이라도 들어간 적 있는 미션List
  5. 한번이라도 들어간 적 있는 피드List
  6. 한번이라도 들어간 적 있는 채팅방들 List