인프런 커뮤니티 질문&답변

박아무개님의 프로필 이미지

작성한 질문수

Next.js 시작하기(feat. 지도 서비스 개발)

next/script로 네이버 지도 불러오기

useRef 사용이유

해결된 질문

23.08.16 10:29 작성

·

352

1

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

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

답변 1

0

박용주님의 프로필 이미지
박용주
지식공유자

2023. 08. 16. 13:04

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

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

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

image

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