yamoo9 / likelion-FEQA

질문/답변 — 프론트엔드 스쿨, 멋사
29 stars 9 forks source link

[LAB-9] 렌더링을 두번해야 정상적인 위치가 되는 문제 #230

Closed qorbaxk closed 1 year ago

qorbaxk commented 1 year ago

질문 작성자

백승연

문제 상황

프로젝트 저장소 URL

환경 정보

yamoo9 commented 1 year ago

@qorbaxk 님.

문제 해석

문제 해결

온도, 강수량, 미세먼지를 처리하는 개별 로딩이 없고 하나로 제어 하려다 보니, 온도, 강수량, 미세먼지 응답이 언제 완료 되었는 지 알 수 없는 것이 문제입니다. 실질적으로 작성된 코드의 loading 상태는 무용지물(無用之物)인 것이죠.

그래서 하나 하나 상태가 언제 바뀌면 좋을 지 분석할 수 밖에 없었습니다. 😱

오랜 시간 분석한 결과.......

WalkAirQuality 이펙트 콜백에서 공기질(aqi) 값이 0보다 커지는 시점이 가장 적절 해보였습니다. 물론 더 적절한 시점이 있을 수 있지만, 그걸 찾는데 너무 많은 시간이 소요될 것 같네요. 🥲

const WalkAirQuality = () => {
  // ...
  useEffect(() => {
    AirLevel(aqi)
    // aqi 값이 0이 아닌 경우, 로딩 상태를 false로 업데이트
    if (aqi > 0) {
      dispatch(getWalkLoading(false))
    }
  })
}

그리고 공기질 업데이트를 제외한 다른 컴포넌트에 작성된 로딩 상태 변경 코드는 모두 제거하거나 주석 처리해야 합니다!

마지막으로 WalkState 초기 상태(initial State)의 로딩 상태 값은 true로 설정해주세요.

이제 결론입니다! 새로고침 해서 확인해도 중간에 기본 값이 뜨지 않고, 현재 위치 정보 기반으로 표시됩니다. 🙂

첨부된 가이드 파일을 다운로드 받아 비교, 분석 및 확인해보세요.

src.zip

추가 질문 답변

MyPageMyPet 컴포넌트 높이가 0이기 때문에 Y축이 움직이는 것입니다. 높이를 설정해 Y축이 움직이지 않도록 설정합니다.

아래 영상 화면을 보면 움직이지 않습니다.

플레이스홀더(Placeholder)를 설정하면 사용자 경험(UX)이 향상됩니다. (참고)

qorbaxk commented 1 year ago

redux > slice > walkindex > walkindexSlice.tsx 파일에 있는 walkLocation의 초기값으로 들어가있는 lat lng의 좌표값이 광화문의 좌표입니다. 거기서 빈값을 넣으면 렌더링시 오류가 나길래 초기값으로 넣어준 것입니다..

yamoo9 commented 1 year ago

redux > slice > walkindex > walkindexSlice.tsx 파일에 있는 walkLocation의 초기값으로 들어가있는 lat lng의 좌표값이 광화문의 좌표입니다. 거기서 빈값을 넣으면 렌더링시 오류가 나길래 초기값으로 넣어준 것입니다..

현재 주어진 문제의 컨텍스트를 프로젝트 당사자가 아닌, 외부인 입장에서 이해하기란 쉽지 않아요. 😥 예를 들어 다음의 설명이 부족함을 느꼈습니다.


@qorbaxk 님이 작성해주신 질문의 정보를 리마인드 할 겸 아래 다시 남겨봅니다. 🥲