강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của jaehyeonlim
jaehyeonlim

câu hỏi đã được viết

Bắt đầu với Next.js (feat. phát triển dịch vụ bản đồ)

Vẽ Marker UI

엘리맨트들의 자식관계가 어떻게 이렇게 되나 궁금합니다.

Đã giải quyết

Viết

·

352

1

선생님 안녕하세요. 좋은강의 너무 감사드립니다!

다름이 아니라 이번 강의에서

MapSection.tsx에서

const MapSection = () => {
  const { initializeMap } = useMap();
  const onLoadMap = (map: NaverMap) => {
    initializeMap(map);
  };

  return (
    <>
      <Map onLoad={onLoadMap} />  // 이부분
      <Markers />  // 이부분
    </>
  );
};

export default MapSection;

이런식으로 return값에

위에 Map 컴포넌트, 아래에 Markers컴포넌트가 왔잖아요.

그래서 저는 맵위에 마커들을 덮어씌우는(?)형식으로 나오게 될 줄 알았습니다. 그런데 결과를 보니,

스크린샷 2023-10-10 오후 3.09.34.png이렇게 map div밑에 자식으로 들어가있더라구요. 어떻게 이렇게 되는지 설명해주시면 감사하겠습니다!!

seonext.jsvercelcsrssgssr

Câu trả lời 1

1

vroomfan님의 프로필 이미지
vroomfan
Người chia sẻ kiến thức

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

Marker 컴포넌트가 return하는 부분을 보시면 return null; 이라고 되어있을 것입니다. 즉, 마커 아이콘은 react의 렌더링부에 의해 그려지는 것이 아닌, Marker.tsx에 있는

marker = new naver.maps.Marker({
  map: map,
  position: new naver.maps.LatLng(...coordinates),
  icon,
});

코드에 의해 그려집니다.
따라서 <Map>과 <Markers>가 겉으로는 병렬 구조로 보일 수 있지만, 실제로는 naver map API의 방식대로 작동하게 됩니다. Marker API 문서를 훑어보시면 조금 더 이해가 되실 것 같습니다. 관련 링크 첨부드립니다ㅎㅎ
(https://navermaps.github.io/maps.js.ncp/docs/tutorial-1-marker-simple.example.html
https://navermaps.github.io/maps.js.ncp/docs/naver.maps.Marker.html)

감사합니다 :)

jaehyeonlim님의 프로필 이미지
jaehyeonlim
Người đặt câu hỏi

아하 그러면

<Markers />  // 이부분

여기는 그냥 네이버 API를 실행하기 위한 부분으로 봐도 괜찮을까요?

UI에 직접적으로 뭘 그리거나 하지는 않구요.

 

너무 감사드립니다~ 선생님은 천재에요!!

vroomfan님의 프로필 이미지
vroomfan
Người chia sẻ kiến thức

넵넵! Markers도 단순히 Marker 컴포넌트 여러 개를 뿌려주는 컴포넌트로 이해하시면 됩니다ㅎㅎ

Hình ảnh hồ sơ của jaehyeonlim
jaehyeonlim

câu hỏi đã được viết

Đặt câu hỏi