πŸ“­ Contact me


πŸ“­ Trouble Shooting


각 μŠ€ν…Œμ΄μ§€μ—μ„œμ˜ κ²½ν—˜μ„ λ°”νƒ•μœΌλ‘œ μ„±μž₯ν•΄κ°€λŠ” μ΄μ•ΌκΈ°μž…λ‹ˆλ‹€.

챕터 1 : CampUs

쀄거리

챕터 1 μ—μ„œμ˜ νŠΈλŸ¬λΈ”μŠˆνŒ… λŠ₯λ ₯κ³Ό Special Stage의 기술적 λ„μ „μ˜ κ²½ν—˜μ„ λ°”νƒ•μœΌλ‘œ 날씨 기반 μΊ ν•‘μž₯ μΆ”μ²œ μ„œλΉ„μŠ€λ₯Ό λ””μžμ΄λ„ˆ, λ°±μ—”λ“œ νŒ€κ³Ό ν•¨κ»˜ λ§Œλ“€μ–΄ μœ μ €λ₯Ό μœ μΉ˜ν•΄κ°€λŠ” κ³Όμ •μ—μ„œ 생긴 μ΄μ•ΌκΈ°μž…λ‹ˆλ‹€.

곡랡 1 : μ†Œν†΅μ˜ 문제

CampUs λŠ” 곡곡데이터 API 쀑 GoCamping APIλ₯Ό λ°±μ—”λ“œμ—μ„œ 3000μ—¬ 개의 μΊ ν•‘μž₯ 데이터λ₯Ό 받은 ν›„ μ„œλΉ„μŠ€μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λ°μ΄ν„°λ‘œ 가곡 및 μ •λ ¬ν•˜μ—¬ 그것을 ν”„λ‘ νŠΈμ—μ„œ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

API λͺ…μ„Έμ„œμ—μ„œ λ‚˜μ™€μžˆλŠ” 객체배열 ꡬ쑰λ₯Ό νŒŒμ•…ν•˜μ—¬ interfaceλ₯Ό λ§Œλ“€μ–΄ λ°μ΄ν„°λ“€μ˜ νƒ€μž…λ“€μ„ 미리 지정을 ν•˜κ³  λ°°μ—΄ depth 및 데이터 ν˜•μ‹μ— 맞게 섀정을 ν•˜μ˜€μŠ΅λ‹ˆλ‹€. κ·Έλ ‡κ²Œ ν•΄μ„œ μΊ ν•‘μž₯ 데이터λ₯Ό 잘 받아와 λ Œλ”λ§μ„ κ΅¬μΆ•ν•˜λŠ”λ° 성곡을 ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

// 객체배열에 맞게 μž‘μ„±λœ μΈν„°νŽ˜μ΄μŠ€

export interface IGetCampResult {
  ImageUrl: string;
  X: string;
  Y: string;
  address: string;
  animal: string;
  campId: number;
  campName: string;
  clturEvent: string;
  createdtime: string;
  doNm: string;
  status: boolean;
  eqpmnLendCl: string;
  featureNm: string;
  homePage: string;
  induty: string;
  lookUp: number;
  manageSttus: string;
  operDeCl: string;
  operPdCl: string;
  pickCount: number;
  posblFcltyCl: string;
  reviewCount: number;
  sbrsCl: string;
  sigunguNm: string;
  swrmCo: string;
  themaEnvrnCl: string;
  toiletCo: string;
  wtrplCo: string;
  look: IGetCampResult;
  review: IGetCampResult;
  pick: IGetCampResult;
  camp: IGetCampResult[];
  distance: number;

  /* toast */
  toastState?: boolean;
  setToastState?: React.Dispatch<React.SetStateAction<boolean>>;
}

export interface campArray extends IGetCampResult {
  currentPage: number;
  total: number;
  topicCamp: IGetCampResult[];
  campTopic: IGetCampResult[];
  searchCamp?: IGetCampResult[];
  detailCamp?: IGetCampResult[];
  camp: IGetCampResult[];
  regionCamp: IGetCampResult[];
  nextPage?: number;
  lastPage?: boolean;
  isLast?: boolean;
  pageParam?: number;
  fetchNextPage: boolean;
  isSuccess: boolean;
  hasNextPage: boolean;
  refetch: boolean;
  icons: string;
}

그런데, λ‹€μŒλ²ˆ λ Œλ”λ§ μ‹œλ„ λ•Œ error boundary 에 κ±Έλ €μ„œ error νŽ˜μ΄μ§€λ‘œ λ„˜μ–΄κ°€λŠ” 문제λ₯Ό μ§λ©΄ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ—λŸ¬ λ‚΄μš©μ€ ν•΄λ‹Ή 데이터 ν˜•μ‹μ΄ api와 λ§žμ§€ μ•Šλ‹€λŠ” λ‚΄μš©μ΄μ—ˆκ³ , κ·Έλž˜μ„œμΈμ§€ 저희 ν”„λ‘ νŠΈμ˜ 문제라고 νŒλ‹¨μ΄ λ˜μ–΄ console둜 ν•΄λ‹Ή μ„œλ²„μ—μ„œ λ„˜μ–΄μ˜€λŠ” 데이터λ₯Ό ν™•μΈν•˜μž, 이전에 λ°±μ—”λ“œμ—μ„œ λ„˜κ²¨μ€¬λ˜ 데이터 ν˜•μ‹κ³Ό λ°°μ—΄μ˜ κΉŠμ΄κ°€ λ‹€λ₯΄κ²Œ λ³€κ²½λ˜μ–΄ λ„˜μ–΄μ˜€κ²Œ 된 것이 μ›μΈμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘  ν•΄λ‹Ή κ°μ²΄λ°°μ—΄μ˜ 값듀을 μΈν„°νŽ˜μ΄μŠ€λ‘œ μ§€μ •λœ νƒ€μž…μ„ λ„£μ–΄μ£ΌλŠ” 것이 μ•„λ‹Œ Any λ₯Ό μ‚¬μš©ν•˜κ²Œ 되면 좔후에 데이터 ν˜•μ‹μ΄ λ³€κ²½λ˜μ–΄λ„ λ¬΄λ‚œν•˜κ²Œ 싀행은 λ˜λ‚˜, νƒ€μž…μ„ μ •ν™•νžˆ λͺ…μ‹œν•˜μ—¬ 예기치 λͺ»ν•œ μ—λŸ¬λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•˜μ—¬ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό λ„μž…ν•˜μ˜€κΈ°μ— ν•΄κ²°λ˜μ–΄μ•Όλœλ‹€κ³  μƒκ°ν•˜μ˜€μŠ΅λ‹ˆλ‹€.