use-postal-jp
Version:
郵便番号を住所に変換するReactカスタムフックです。住所データを内部に持たず、APIで住所変換するため軽量なパッケージになっています。
2 lines (1 loc) • 1.23 kB
JavaScript
(function(t,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],r):(t=typeof globalThis!="undefined"?globalThis:t||self,r(t.usePostalJp={},t.react))})(this,function(t,r){"use strict";var i={api:"https://madefor.github.io/postal-code-api/api/v1/"};const p=d=>{const s=`${d}`.replace(/[^0-90-9]/g,"").replace(/[0-9]/g,e=>String.fromCharCode(e.charCodeAt(0)-65248));return[s.slice(0,3),s.slice(3,7)]},h=([d,s])=>`${i.api}${d}/${s}.json`,g=d=>{const{data:[{prefcode:s,ja:e}]}=d;return{prefectureCode:s,prefecture:e.prefecture,address1:e.address1,address2:e.address2,address3:e.address3,address4:e.address4}},m=(d,s,e)=>{var f,o;const S=(f=e==null?void 0:e.url)!=null?f:h,j=(o=e==null?void 0:e.parse)!=null?o:g,[y,u]=r.useState(null),[P,c]=r.useState(!1),[$,l]=r.useState(null);return r.useEffect(()=>{let a=!0;if(!!s)return c(!0),fetch(S(p(d))).then(n=>{if(!n.ok)throw new Error("Bad request");return n.json()}).then(n=>{a&&l(j(n)),a&&u(null)}).catch(n=>{a&&l(null),a&&u(n)}).finally(()=>{a&&c(!1)}),()=>{a=!1}},[d,s]),[$,P,y]};t.usePostalJp=m,Object.defineProperty(t,"__esModule",{value:!0}),t[Symbol.toStringTag]="Module"});