Closed MintaekCho closed 1 year ago
페이지 초기 렌더링 이후 콘서트 디테일 페이지 접근했을 때 카카오지도 렌더링 안되는 이슈
export default function KakaoMap({ x, y }: { x: string; y: string }) {
const API_KEY = process.env.NEXT_PUBLIC_KAKAO_API_KEY;
const KAKAO_SDK_URL = `//dapi.kakao.com/v2/maps/sdk.js?appkey=${API_KEY}&autoload=false`;
console.log(x);
return (x && y) ? (
<>
<Script src={KAKAO_SDK_URL} />
<Map
center={{ lng: Number(x), lat: Number(y) }}
className="w-full h-[450px]"
>
<MapMarker position={{ lng: Number(x), lat: Number(y) }} />
<MapTypeControl />
<ZoomControl />
</Map>
</>
) : null;
}
기존 코드는 카카오 지도를 렌더링하는 컴포넌트에 스크립트 코드를 넣었음. 즉 기존에는 카카오지도가 삽입되어 있는 페이지에 들어가야 카카오지도 스크립트 코드가 받아졌기 때문에 가장 처음 콘서트 디테일 페이지에 들어갔을 때 스크립트 코드가 받아지면서 지도 렌더링이 안되고 그 이후부터 렌더링이 되었던 것.
해결방법은 콘서트 디테일 페이지에 들어가기전 즉, 페이지에 들어가는 순간 스크립트 코드가 받아지도록 변경하면 됨.
const API_KEY = process.env.NEXT_PUBLIC_KAKAO_API_KEY;
const KAKAO_SDK_URL = `//dapi.kakao.com/v2/maps/sdk.js?appkey=${API_KEY}&autoload=false`;
export const metadata = { title: "Consert-App", description: "Generated by create next app", };
export default function RootLayout({ children, }: { children: React.ReactNode; }) { return (
); }
다음과 같이 최상위 레이아웃 파일로 스크립트 코드를 이동시켰고, 메인페이지가 렌더링 될 때 스크립트 코드가 받아지도록 코드 구성을 변경하여 해결됨.
![Image](https://github.com/MintaekCho/consert-app/assets/105726931/5a100ce7-c2d3-4a0a-96ce-ee837c46368b)
![Image](https://github.com/MintaekCho/consert-app/assets/105726931/44e4b290-cca5-426d-8fa3-ce936b0e59d3)
페이지 초기 렌더링 이후 콘서트 디테일 페이지 접근했을 때 카카오지도 렌더링 안되는 이슈