|
1 | 1 | # react-daum-postcode |
2 | 2 |
|
3 | | -리액트 컴포넌트로 만든 Daum 우편번호 검색 서비스입니다. Daum 우편번호 검색 서비스를 React 환경에서 간편하게 이용할 수 있습니다. |
| 3 | +Daum 우편번호 검색 서비스를 React 환경에서 간편하게 이용할 수 있습니다. |
4 | 4 |
|
5 | | -## 설치 |
| 5 | +## Install |
6 | 6 |
|
7 | 7 | ```shell |
8 | 8 | npm install --save react-daum-postcode |
9 | 9 | // or |
10 | 10 | yarn add react-daum-postcode |
11 | 11 | ``` |
12 | 12 |
|
13 | | -## 사용 |
| 13 | +## Embed |
| 14 | + |
| 15 | +`DaumPostcodeEmbed` 컴포넌트를 사용하여, 우편번호 검색 서비스를 임베드 방식으로 사용할 수 있습니다. |
| 16 | + |
| 17 | +```javascript |
| 18 | +import React from 'react'; |
| 19 | +import DaumPostcodeEmbed from 'react-daum-postcode'; |
| 20 | + |
| 21 | +const Postcode = () => { |
| 22 | + const handleComplete = (data) => { |
| 23 | + let fullAddress = data.address; |
| 24 | + let extraAddress = ''; |
| 25 | + |
| 26 | + if (data.addressType === 'R') { |
| 27 | + if (data.bname !== '') { |
| 28 | + extraAddress += data.bname; |
| 29 | + } |
| 30 | + if (data.buildingName !== '') { |
| 31 | + extraAddress += extraAddress !== '' ? `, ${data.buildingName}` : data.buildingName; |
| 32 | + } |
| 33 | + fullAddress += extraAddress !== '' ? ` (${extraAddress})` : ''; |
| 34 | + } |
| 35 | + |
| 36 | + console.log(fullAddress); // e.g. '서울 성동구 왕십리로2길 20 (성수동1가)' |
| 37 | + }; |
| 38 | + |
| 39 | + return <DaumPostcodeEmbed onComplete={handleComplete} {...props} />; |
| 40 | +}; |
| 41 | +``` |
| 42 | + |
| 43 | +`DaumPostcodeEmbed` 컴포넌트에 다음 우편번호 서비스의 생성자 및 임베드 설정값 등을 `props`로 전달할 수 있습니다. 전달하지 않은 설정값은 다음 우편번호 서비스의 기본 설정을 따라갑니다. |
| 44 | + |
| 45 | +| name | type | default | description |
| 46 | +|:----:|:----:|:-------:|:-----------| |
| 47 | +| scriptUrl | `string` | [CURRENT_URL](https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js) | Daum 우편번호 서비스의 스크립트 주소입니다.| |
| 48 | +| onComplete | `function` | `undefined` | 우편번호 검색이 끝났을 때 사용자가 선택한 정보를 받아올 콜백함수입니다. 주소 데이터의 구성은 [Daum 가이드](http://postcode.map.daum.net/guide)를 참고해주세요. | |
| 49 | +| onSearch | `function` | `undefined` | 주소를 검색할 경우 실행되는 콜백함수입니다. 검색 결과 정보의 구성은 [Daum 가이드](http://postcode.map.daum.net/guide)를 참고해주세요. | |
| 50 | +| onClose | `function` | `undefined` | 검색 결과를 선택하여, 서비스가 닫힐 때 실행되는 콜백함수입니다. | |
| 51 | +| onResize | `function` | `undefined` | 검색 결과로 인해, 우편번호 서비스의 화면 크기가 변경될 때 호출되는 콜백함수입니다. 변경된 화면 정보의 구성은 [Daum 가이드](http://postcode.map.daum.net/guide)를 참고해주세요. | |
| 52 | +| className | `string` | `undefined` | 우편번호 검색창을 감싸는 최상위 엘리먼트에 적용할 클래스 이름입니다. | |
| 53 | +| style | `object` | `{ width:"100%", height:400 }` | 우편번호 검색창을 감싸는 최상위 엘리먼트에 적용할 스타일입니다. | |
| 54 | +| defaultQuery | `string` | `undefined` | 우편번호 검색창에 기본으로 입력할 검색어입니다. |
| 55 | +| autoClose | `boolean` | `true` | 우편번호 검색 완료시 자동 닫힘 여부입니다. 주소를 선택하면, 최상위 엘리먼트를 돔에서 제거합니다. | |
| 56 | +| errorMessage | `ReactNode` | `<p>현재 Daum 우편번호 서비스를 이용할 수 없습니다. 잠시 후 다시 시도해주세요.</p>` | 우편번호 서비스 스크립트 로드에 실패했을 때 나타낼 에러 메세지 입니다. | |
| 57 | + |
| 58 | +기타 Daum 우편번호 생성자 속성들을 동일한 이름으로 props를 전달할 수 있습니다. 속성값에 대해서는 [Daum 우편번호 서비스 가이드](http://postcode.map.daum.net/guide#attributes)를 참고해주세요. |
| 59 | + |
| 60 | +## Popup |
| 61 | + |
| 62 | +`useDaumPostcodePopup` hook 을 사용하여, 반환받은 함수를 통해 우편번호 검색 서비스를 팝업 방식으로 이용할 수 있습니다. |
14 | 63 |
|
15 | 64 | ```javascript |
16 | 65 | import React from 'react'; |
17 | | -import DaumPostcode from 'react-daum-postcode'; |
| 66 | +import { useDaumPostcodePopup } from 'react-daum-postcode'; |
18 | 67 |
|
19 | 68 | const Postcode = () => { |
| 69 | + const open = useDaumPostcodePopup(scriptUrl); |
| 70 | + |
20 | 71 | const handleComplete = (data) => { |
21 | 72 | let fullAddress = data.address; |
22 | | - let extraAddress = ''; |
23 | | - |
| 73 | + let extraAddress = ''; |
| 74 | + |
24 | 75 | if (data.addressType === 'R') { |
25 | 76 | if (data.bname !== '') { |
26 | 77 | extraAddress += data.bname; |
27 | 78 | } |
28 | 79 | if (data.buildingName !== '') { |
29 | | - extraAddress += (extraAddress !== '' ? `, ${data.buildingName}` : data.buildingName); |
| 80 | + extraAddress += extraAddress !== '' ? `, ${data.buildingName}` : data.buildingName; |
30 | 81 | } |
31 | | - fullAddress += (extraAddress !== '' ? ` (${extraAddress})` : ''); |
| 82 | + fullAddress += extraAddress !== '' ? ` (${extraAddress})` : ''; |
32 | 83 | } |
33 | 84 |
|
34 | | - console.log(fullAddress); // e.g. '서울 성동구 왕십리로2길 20 (성수동1가)' |
35 | | - } |
| 85 | + console.log(fullAddress); // e.g. '서울 성동구 왕십리로2길 20 (성수동1가)' |
| 86 | + }; |
| 87 | + |
| 88 | + const handleClick = () => { |
| 89 | + open({ onComplete: handleComplete }); |
| 90 | + }; |
36 | 91 |
|
37 | 92 | return ( |
38 | | - <DaumPostcode |
39 | | - onComplete={handleComplete} |
40 | | - { ...props } |
41 | | - /> |
| 93 | + <button type='button' onClick={handleClick}> |
| 94 | + Open |
| 95 | + </button> |
42 | 96 | ); |
43 | | -} |
| 97 | +}; |
44 | 98 | ``` |
45 | 99 |
|
46 | | -## props |
47 | | - |
48 | | -- `onComplete` _[function]_ - 우편번호 검색이 끝났을 때 사용자가 선택한 정보를 받아올 콜백함수입니다. |
49 | | - - `function(data: object) => void` : 주소 데이터의 구성은 [Daum 우편번호 서비스 가이드](http://postcode.map.daum.net/guide)를 참고해주세요. |
50 | | -- `onSearch` _[function]_ - 주소를 검색할 경우에 실행되는 콜백함수입니다. |
51 | | - - `function(data: object) => void` : 검색결과 정보의 구성은 [Daum 우편번호 서비스 가이드](http://postcode.map.daum.net/guide)를 참고해주세요. |
52 | | -- `onClose` _[function]_ - 검색 결과를 선택하여, 우편번호 검색이 닫힐 때 실행되는 콜백함수입니다. |
53 | | -- `onResize` _[function]_ - 검색 결과로 인해, 우편번호 서비스의 화면 크기가 변경될 때 실행되는 콜백함수입니다. |
54 | | -- `className` _[string]_ - 우편번호 검색창을 감싸는 최상위 엘리먼트에 적용할 클래스명입니다. |
55 | | -- `style` _[object]_ - 우편번호 검색창을 감싸는 최상위 엘리먼트에 적용할 스타일입니다. 기본값: `{ width: 100%, height: 400 }` |
56 | | -- `scriptUrl` _[string]_ - 컴포넌트에서 사용할 Daum 우편번호 스크립트 주소입니다. 기본값: `'https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js'` |
57 | | -- `defaultQuery` _[string]_ - 우편번호 검색창에 기본으로 입력할 검색어입니다. 기본값 : `undefined` |
58 | | -- `autoClose` _[boolean]_ - 우편번호 검색 완료시, 자동 닫힘 여부입니다. 주소를 선택하면, 최상위 엘리먼트를 돔에서 제거합니다. 기본값: `true` |
59 | | -- `errorMessage` _[React element]_ - Daum 우편번호 스크립트가 로드되지 않을 때 나타낼 에러 메시지입니다. 기본값: `<p>현재 Daum 우편번호 서비스를 이용할 수 없습니다. 잠시 후 다시 시도해주세요.</p>` |
60 | | -- 기타 Daum 우편번호 생성자 속성들을 동일한 이름으로 props를 전달할 수 있습니다. 속성값에 대해서는 [Daum 우편번호 서비스 가이드](http://postcode.map.daum.net/guide#attributes)를 참고해주세요. |
| 100 | +`useDaumPostcodePopup` 실행 시 우편번호 서비스의 스크립트 주소를 전달할 수 있습니다. 반환한 함수를 실행할 때 다음 우편번호 서비스의 생성자 및 팝업 설정값을 전달할 수 있습니다. 전달하지 않은 설정값은 다음 우편번호 서비스의 기본 설정을 따라갑니다. |
| 101 | + |
| 102 | +| name | type | default | description |
| 103 | +|:----:|:----:|:-------:|:-----------| |
| 104 | +| scriptUrl | `string` | [CURRENT_URL](https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js) | Daum 우편번호 서비스의 스크립트 주소입니다.| |
| 105 | +| onComplete | `function` | `undefined` | 우편번호 검색이 끝났을 때 사용자가 선택한 정보를 받아올 콜백함수입니다. 주소 데이터의 구성은 [Daum 가이드](http://postcode.map.daum.net/guide)를 참고해주세요. | |
| 106 | +| onSearch | `function` | `undefined` | 주소를 검색할 경우 실행되는 콜백함수입니다. 검색 결과 정보의 구성은 [Daum 가이드](http://postcode.map.daum.net/guide)를 참고해주세요. | |
| 107 | +| onClose | `function` | `undefined` | 검색 결과를 선택하여, 서비스가 닫힐 때 실행되는 콜백함수입니다. | |
| 108 | +| onResize | `function` | `undefined` | 검색 결과로 인해, 우편번호 서비스의 화면 크기가 변경될 때 호출되는 콜백함수입니다. 변경된 화면 정보의 구성은 [Daum 가이드](http://postcode.map.daum.net/guide)를 참고해주세요. | |
| 109 | +| width | `string\|number` | `undefined` | 우편번호 검색창의 가로 너비입니다. | |
| 110 | +| height | `string\|number` | `undefined` | 우편번호 검색창의 세로 높이입니다. | |
| 111 | +| defaultQuery | `string` | `undefined` | 우편번호 검색창에 기본으로 입력할 검색어입니다. | |
| 112 | +| top | `string\|number` | `undefined` | 팝업의 Y 위치를 나타내는 값입니다. | |
| 113 | +| left | `string\|number` | `undefined` | 팝업의 X 위치를 나타내는 값입니다. | |
| 114 | +| popupTitle | `string` | `undefined` | 팝업창의 상태표시줄에 나오는 Title 값을 지정할 수 있습니다. 전달하지 않을 경우, 다음 우편번호의 기본 설정 문구가 출력됩니다. | |
| 115 | +| popupKey | `string` | `undefined` | 팝업창의 key 입니다. 전달하지 않을 경우 매번 새창이 열리게 됩니다. | |
| 116 | +| autoClose | `boolean` | `true` | 우편번호 검색 완료시 자동 닫힘 여부입니다. 주소를 선택하면 팝업창이 닫힙니다. |
| 117 | + |
| 118 | +기타 Daum 우편번호 생성자 속성들을 동일한 이름으로 props를 전달할 수 있습니다. 속성값에 대해서는 [Daum 우편번호 서비스 가이드](http://postcode.map.daum.net/guide#attributes)를 참고해주세요. |
| 119 | + |
61 | 120 |
|
62 | 121 | ## 안내 |
63 | 122 |
|
64 | | -`react-daum-postcode`는 Daum 우편번호 서비스와 독립적으로 제작된 패키지입니다. React환경에서 발생하는 `react-daum-postcode`의 버그는 패키지 레포지터리의 [이슈트래커](https://github.com/kimminsik-bernard/react-daum-postcode/issues)에 말씀해주세요. 만약 Daum 우편번호 서비스 자체의 문제라고 생각하신다면, 다음 우편번호 서비스의 [FAQ](https://github.com/daumPostcode/QnA/blob/master/README.md)와 [이슈트래커](https://github.com/daumPostcode/QnA/issues)를 참조해주세요. |
| 123 | +`react-daum-postcode`는 Daum 우편번호 서비스와 독립적으로 제작된 패키지입니다. React환경에서 발생하는 `react-daum-postcode`의 버그는 패키지 레포지터리의 [이슈트래커](https://github.com/kimminsik-bernard/react-daum-postcode/issues)에 말씀해주세요. 만약 Daum 우편번호 서비스 자체의 문제라고 생각하신다면, 다음 우편번호 서비스의 [FAQ](https://github.com/daumPostcode/QnA/blob/master/README.md)와 [이슈트래커](https://github.com/daumPostcode/QnA/issues)를 참조해주세요. |
0 commit comments