• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

useRef 사용이유

23.08.16 10:29 작성 조회수 283

1

강의에 useRef 사용 이유에 대해선 안나오는거 같은데 아래 두 코드는 왜 사용된건지 설명해주실 수 있나요??

  const mapRef = useRef<NaverMap | null>(null)
    mapRef.current = map

답변 1

답변을 작성해보세요.

0

안녕하세요. 질문 감사합니다.

해당 강의 7:00 부분을 보시면 mapRef.current.destroy()를 호출하는 코드가 있습니다. 즉, initializeMap 함수에서 생성된 "map 객체"에 접근하여 destroy를 해야하는 상황입니다. 때문에 initializeMap 함수에서 "map 객체"를 따로 저장해두어야 useEffect 안에서 객체에 접근하여 destroy 할 수 있게 됩니다.

useState로 객체를 저장할 수도 있겠지만, "map 객체"는 destroy 함수를 실행하기 위해 저장하는 것일 뿐 컴포넌트 렌더링과 관련된 값은 아닙니다. 따라서 useState 대신 useRef로 값을 저장하는 게 낫습니다. (아래 사진 참고)

image

리액트 문법과 관련된 부분이라 설명이 충분치 못했던 것 같습니다. 말씀해주셔서 감사합니다! :)