티스토리 뷰
사실 별거 아닌 트러블 슈팅이지만 차후 참고사항으로 쓸 수 있을 것 같아서 작성해본다..
index로 계속 문제를 겪고 있었다.
당연히 css로 해결해야하는 것 이라고 생각하고 다양한 방법으로 css를 주고 있었다.
boolean 값으로도 해보고 아는 선에서 다 시도해 보았지만 index가 주어지지 않았다.
const [userDotKey, setUserDotKey] = useState(() => `userDot-${Date.now()}`);
결국 key값을 주고 강제로 렌더링을 할 수 있도록 해보았다.
이렇게 강제로 렌더링을 시켜 `dom`에 그려지는 순서를 조작했지만
문제는 동일한 닷 컴포넌트를 그리는 커스텀오버레이에서
hover가 되었을때와 되지 않았을때를 나누는 <div/> 에서는 index를 줄 수 있는 방법이 없었다.
카카오 공식문서를 찾아보았지만 나는 이해할 수 없었다.
그렇게 찾고 찾다가 react-kakao-maps-sdk github를 살펴보았는데 바로 이해할 수 있었다..
그리고 1분만에 해결이 되었다.
react-kakao-maps-sdk에서는 react에서 사용할 수 있는` <CustomOverlayMap/> ` 컴포넌트를 제공한다.
그리고 아래에 값들을 props로 받을 수 있다.
* 커스텀 오버레이의 좌표
position: {
lat: number
lng: number
}
* true 로 설정하면 컨텐츠 영역을 클릭했을 경우 지도 이벤트를 막아준다.
clickable?: boolean
/**
* 컨텐츠의 x축 위치. 0_1 사이의 값을 가진다. 기본값은 0.5
*/
xAnchor?: number
/**
* 컨텐츠의 y축 위치. 0_1 사이의 값을 가진다. 기본값은 0.5
*/
yAnchor?: number
/**
* 커스텀 오버레이의 z-index
*/
zIndex?: number
/**
* 커스텀 오버레이를 생성 후 해당 객체를 가지고 callback 함수를 실행 시켜줌
*/
onCreate?: (customOverlay: kakao.maps.CustomOverlay) => void
}
즉 react-kakao-maps-sdk에서 제공하는` <CustomOverlayMap/> ` 컴포넌트에 props로 index 값을 넘겨주면 해결 될 수 있었다.
< 기존 코드 >
<CustomOverlayMap
position={{
lat: marker.lat,
lng: marker.lng,
}}
xAnchor={0.5}
yAnchor={0.5}
>
<div
onMouseOver={() => handleMouseOver(marker.id)}
onMouseOut={handleMouseOut}
>
<Dot
level={marker.level}
id={marker.id}
hover={hoveredMarker === marker.id}
/>
</div>
</CustomOverlayMap>
< 수정된 코드 >
<CustomOverlayMap
position={{
lat: marker.lat,
lng: marker.lng,
}}
xAnchor={0.5}
yAnchor={0.5}
zIndex={hoveredMarker === marker.id ? 20 : 1}
>
<div
onMouseOver={() => handleMouseOver(marker.id)}
onMouseOut={handleMouseOut}
>
<Dot
level={marker.level}
id={marker.id}
hover={hoveredMarker === marker.id}
/>
</div>
</CustomOverlayMap>
참고 문서
1. react-kakao-maps-sdk 깃허브
react-kakao-maps-sdk/packages/react-kakao-maps-sdk/src/components/CustomOverlayMap.tsx at 485b580b8b8e9b43a921d12b904b0860805704
React components for using kakao map api. Contribute to JaeSeoKim/react-kakao-maps-sdk development by creating an account on GitHub.
github.com
'Error' 카테고리의 다른 글
tailwind css Error ..? (슬라이딩 패널 컴포넌트) (0) | 2024.08.20 |
---|---|
Kakao Map Error: Constructor Map requires 'new' (0) | 2024.08.16 |
Error: Invalid src prop _ next.js (0) | 2024.06.05 |
multipart/form-data 시도 시 Boundary not found Error (0) | 2024.06.04 |
Next.Js Hydration failed Error (0) | 2024.05.19 |
- Total
- Today
- Yesterday
- readme 작성해야 하는 이유
- Fetch와 Axios 의 장단점
- 유효성검사
- git cache
- readme 역할
- styled component 설치방법
- styled component GlobalStyle 사용방법
- readme작성해보기
- 에러모음집
- 유효성검사 css
- simple Icon 사용방법
- Warning: validateDOMNesting(...): <li> cannot appear as a descendant of <li>
- axiosinstance 사용 시 토큰 사용 법
- readme 작성 방법
- Warning: Each child in a list should have a unique "key" prop.
- 영화별점만들기
- styled component 사용방법
- readme 이미지 추가 방법
- 별점만들기
- Warning: A component is changing an uncontrolled input to be controlled.
- axios instance 작성하기
- styled component 조건부 사용방법
- nextjs 토큰 만료처리하기
- 별점 색채우기
- axios CRUD
- axios 사용하기
- axios 설치하기
- 영화 별점
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |