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

nana님의 프로필 이미지
nana

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

중고마켓 카카오맵 질문

해결된 질문

작성

·

510

·

수정됨

0

중고마켓 구현 중에 계속 구글링해도 해결이 안돼서 질문드립니다ㅠ

Header에 판매하기 Link가 있고, 클릭하면 /product/new 로 이동하게 했습니다

주소창에 직접 주소를 입력해서 들어가면 에러가 안뜨는데, 버튼을 클릭해서 들어가면

TypeError: window.kakao.maps.LatLng is not a constructor 에러가 발생하는데

원인이 뭘까요 ....??

Header

             <Link href="/product/new">
                <a>
                  <S.HeaderIcon>
                    판매하기
                  </S.HeaderIcon>
                </a>
              </Link>

BoardWrite

declare const window: typeof globalThis & {
  kakao: any
}

export default function BoardWrite(props: IBoardWriteProps): JSX.Element {
  const router = useRouter()
  const { setValue, trigger } = useForm({
    mode: "onChange",
  })

  useEffect(() => {
    const script = document.createElement("script")
    script.src =
      "https://dapi.kakao.com/v2/maps/sdk.js?autoload=false&appkey=앱키"
    document.head.appendChild(script)

    script.onload = () => {
      window.kakao.maps.load(function () {
        const container = document.getElementById("map") // 지도를 담을 영역의 DOM 레퍼런스
        const options = {
          // 지도를 생성할 때 필요한 기본 옵션
          center: new window.kakao.maps.LatLng(37.462381, 126.813369), // 지도의 중심좌표.
          level: 3, // 지도의 레벨(확대, 축소 정도)
        }

        const map = new window.kakao.maps.Map(container, options) // 지도 생성 및 객체 리턴

      })
    }
  }, [])

답변 1

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! nana님!

해당 내용은 수업에서 설명되고 있는 SPA관련 내용인데요!
잘 따라와 주셨으나 한가지 빠뜨린게 있네요!

카카오 라이브러리를 다운로드 받아오기 위해 앱키를 제공해 주셔야하는데!
아래 nana님의 코드에서 appkey=앱키 부분에 들어가야하는 앱키는 실제로 카카오 개발자 사이트로부터 발급받은 키값이 들어가야합니다!^^

script.src =
      "https://dapi.kakao.com/v2/maps/sdk.js?autoload=false&appkey=앱키"

해당 내용을 수정하여 다시 시도해 보세요!

nana님의 프로필 이미지
nana
질문자

아 질문할때 앱키 노출이 안되게 하려고 발급받은 키값 지우고 제가 임의로 적어뒀습니다!ㅠ
그래서 주소창에 직접 주소를 입력해서 들어가면 정상적으로 작동이 되거든요..
그 부분말고 다른 부분에 문제가 없는걸까요..?

노원두님의 프로필 이미지
노원두
지식공유자

네! nana님!

아마도 중고마켓 코드와 현재 위에 올려주신 코드가 다른 것 같네요!
위에 올려주신 코드에서 앱키만 변경하여 그대로 테스트해본 결과 정상적으로 작동됩니다.

해당 수업에서와 마찬가지로 1. 주소창에 다이렉트 입력하는 경우, 2. 다른 페이지에서 버튼을 클릭하여 넘어오는 경우 총 2가지를 모두 테스트해본 결과 정상적으로 작동합니다.

해당 코드의 문제가 아니고, 이를 중고마켓에 적용함으로써 다른 연결된 컴포넌트 등과의 관계로 인하여 코드가 꼬이게 된 것 같네요.

원리는 동일하기 때문에, 이를 포함하고 있는 컴포넌트와 연관된 다른 컴포넌트들의 중복렌더링 등으로 발생하는 이슈, 또는 컴포넌트의 사라짐 현상 등 다양하게 확인해보아야 할 문제인 것 같아요!
이럴 때는, 조급하게 하려고 하지 마시고, 렌더링 순서를 따져가며(불필요한 부분을 주석해가며) 제대로 정리를 한 번 하셔야 해요!
시간이 많이 걸리실 수 있으며, 이러한 복잡한 상황을 해결함으로써 한단계 더 성장하실 것 같네요!
반드시 해결하고 넘어가시길 권장드립니다!

nana님의 프로필 이미지
nana

작성한 질문수

질문하기