본문 바로가기
React

[React] react 에서 우편번호 찾기 api 사용하기 - 떽떽대는 개발공부

by 떽이 2021. 2. 22.

 

 

오늘은 react 에서 오픈 api 를 사용하여 우편번호 찾기 기능을 구현 해볼 것이다.

다음에서 제공하는 api 를 사용할 것이다.

react-daum-postcode

 

우편번호 검색이라고 되어있는 버튼을 클릭하면 우편번호 검색 창이 팝업 형식으로 나타나게 구현할 계획이다.

아래와 같이 버튼과 팝업창의 기준이 될 공간을 하나 만들어 준다.

src/Test.js

import React, { useState } from 'react';
import PopupDom from './PopupDom';
import PopupPostCode from './PopupPostCode';
const Test = () => {
// 팝업창 상태 관리
const [isPopupOpen, setIsPopupOpen] = useState(false)
// 팝업창 열기
const openPostCode = () => {
setIsPopupOpen(true)
}
// 팝업창 닫기
const closePostCode = () => {
setIsPopupOpen(false)
}
return(
<div>
// 버튼 클릭 시 팝업 생성
<button type='button' onClick={openPostCode}>우편번호 검색</button>
// 팝업 생성 기준 div
<div id='popupDom'>
{isPopupOpen && (
<PopupDom>
<PopupPostCode onClose={closePostCode} />
</PopupDom>
)}
</div>
</div>
)
}
export default Test;

 

위와 같이 간단히 우편번호 검색 이라는 버튼이 보이는 컴포넌트를 만들었다.

이제 팝업창을 띄워줄 수 있도록 react-dom 을 하나 더 생성 해주어야 한다.

PopupDom.js 파일을 작성 해준다.

src/PopupDom.js

import ReactDom from 'react-dom';
const PopupDom = ({ children }) => {
const el = document.getElementById('popupDom');
return ReactDom.createPortal(children, el);
};
export default PopupDom;

 

이제 실제로 팝업창에 나타날 페이지인 PopupPostCode.js 파일을 생성 해준다.

src/PopupPostCode.js

import React from 'react';
import DaumPostcode from "react-daum-postcode";
const PopupPostCode = (props) => {
// 우편번호 검색 후 주소 클릭 시 실행될 함수, data callback 용
const handlePostCode = (data) => {
let fullAddress = data.address;
let extraAddress = '';
if (data.addressType === 'R') {
if (data.bname !== '') {
extraAddress += data.bname;
}
if (data.buildingName !== '') {
extraAddress += (extraAddress !== '' ? `, ${data.buildingName}` : data.buildingName);
}
fullAddress += (extraAddress !== '' ? ` (${extraAddress})` : '');
}
console.log(data)
console.log(fullAddress)
console.log(data.zonecode)
props.onClose()
}
const postCodeStyle = {
display: "block",
position: "absolute",
top: "10%",
width: "600px",
height: "600px",
padding: "7px",
};
return(
<div>
<DaumPostcode style={postCodeStyle} onComplete={handlePostCode} />
// 닫기 버튼 생성
<button type='button' onClick={() => {props.onClose()}} className='postCode_btn'>닫기</button>
</div>
)
}
export default PopupPostCode;

 

팝업창이 생성되고, 따로 닫기 버튼이 있지 않아서 버튼을 하나 생성하고 div 로 감싸주었다.

닫기 버튼을 클릭하면 props 로 받아온 onClose 를 호출하여 페이지를 닫는다.

위와 같이 간단히 api 를 사용하여 주소창을 구현하면 아래와 같은 결과를 얻을 수 있다.

  • 검색 전

  • 검색 후

  • 콘솔창

 

 

댓글