Skip to content

Instantly share code, notes, and snippets.

@no-pla
Created July 21, 2023 07:38
Show Gist options
  • Save no-pla/342ab3b35f5db1c60d2311ba7550ebf3 to your computer and use it in GitHub Desktop.
Save no-pla/342ab3b35f5db1c60d2311ba7550ebf3 to your computer and use it in GitHub Desktop.
자바스크립트 코드에서 리액트로 리팩토링한 코드입니다. 리팩토링 이전 500줄에 달하던 코드를 53줄로 줄였습니다.
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