-
-
Save no-pla/342ab3b35f5db1c60d2311ba7550ebf3 to your computer and use it in GitHub Desktop.
자바스크립트 코드에서 리액트로 리팩토링한 코드입니다. 리팩토링 이전 500줄에 달하던 코드를 53줄로 줄였습니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
useEffect(() => { | |
// 상세 페이지 열면 hospitalId => 병원 공유 통해서 들어왔을 때 or 병원 클릭 시 | |
if (hospitalName && placeId) { | |
setPlace(hospitalName); | |
setIsSearchOpen(true); | |
setIsDetailOpen(true); | |
} | |
if (!map) return; | |
if (!hospitalName) return; | |
const ps = new kakao.maps.services.Places(); | |
// 키워드에 맞는 동물병원 표시 | |
ps.keywordSearch(hospitalName, (data, status, pagination) => { | |
if (data.length === 0) { | |
setHospitalList([]); | |
setPlace(""); | |
} else if (data.length === 1) { | |
setTargetHospitalData(data[0]); | |
} else if (data.length > 1) { | |
setTargetHospitalData( | |
data.filter((target: any) => target.id === placeId)[0], | |
); | |
// setTargetHospitalData(); | |
} | |
if (status === kakao.maps.services.Status.OK) { | |
// 검색된 장소 위치를 기준으로 지도 범위를 재설정하기위해 | |
// LatLngBounds 객체에 좌표를 추가합니다 | |
const bounds = new kakao.maps.LatLngBounds(); | |
let markers: { | |
position: { lat: string; lng: string }; | |
content: string; | |
}[] = []; | |
const tempArray: any = []; | |
data.forEach((marker) => { | |
tempArray.push(marker); | |
markers.push({ | |
position: { | |
lat: marker.y, | |
lng: marker.x, | |
}, | |
content: marker.place_name, | |
}); | |
bounds.extend(new kakao.maps.LatLng(+marker.y, +marker.x)); | |
}); | |
setMarkers(markers); | |
setHospitalList(tempArray); | |
// 검색된 장소 위치를 기준으로 지도 범위를 재설정합니다 | |
map.setBounds(bounds); | |
} | |
}); | |
}, [map]); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment