๐ ํ๋ก์ ํธ๊ฐ ๋๋ ํ ์์ฌ์ ๋ ๊ฒ๋ค
๋น์ฐํ ๋ถ์กฑํ๊ณ , ์์ฌ์ด ๊ฒ๋ค ํฌ์ฑ์ด๋ค.
์ค์ค๋ก ์์ฑ ํ๊ธฐ ๋ณด๋จ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณ ์ณ๋๊ฐ๊ธฐ๋ก ๋ง์์ ๋ค์ก๊ณ ๊ณ ์น ์ ๋ค์ ๋ฆฌ์คํธ์ ํด๋ณธ๋ค.
๊ทธ๋ ๊ทธ๋ ๊ณ ์น ์ ๋ค์ ์ ๊ณ ์ด๋ป๊ฒ ๊ณ ์ณค๋์ง,
๋ ์ด๋ค ์์ผ๋ก ๋ฐ์ ํ ์ ์์ ๊ฒ์ธ์ง ๋ฑ์ ๊ธฐ๋กํ ๋ฆฌํฉํ ๋ง ๋ก๊ทธ๋ฅผ ์์ํ๋ค ๐
โ ๋ฃจํธ ์์ฑ ํ์ด์ง, ๋ฃจ์ธ ์์ ํ์ด์ง : ๋ง์ปค ์ฌ๋ฌ๊ฐ (5๊ฐ ์ด์) ์ถ๊ฐํ์ ๋ ํ๋ฉด์ด ํ์์ง๋ ์๋ฌ
--> ์ด๊ฑฐ ์ ๋ง ์ฌ๊ฐํ ๋ฌธ์ ์๋ค.
ํ๋ก์ ํธ๊ฐ ๊ฑฐ์ ๋๋ ๋์ฆ์์ ๋ง๋ ์๋ฌ๋ผ ๊ธฐ๊ฐ ๋ด์ ํด๊ฒฐํ์ง ๋ชปํ๊ณ ์ ์ถํ์๋ค. ๐
์ฌ์ง์ด ํ์๋ถ์ด "๋ง์ปค๋ฅผ ์ฌ๋ฌ๊ฐ ์ถ๊ฐํ๋ฉด ํ๋ฉด ๋์์ด ๋๋ ค์ ธ์ !" ๋ผ๊ณ ์๋ ค์ฃผ์ ์ ๋ฐ๊ฒฌํ๊ฒ ๋๋ค.
๋ ธํธ๋ถ์์, ํน์ ๋ชจ๋ฐ์ผ์์ ๋คํธ์ํฌ ๋ถํ๋ฅผ ์ด๋ป๊ฒ ๊ฐ๋นํ ๊น ?-? ๋ฅผ ๊ณ ๋ฏผํ์ง ์์ ๋๊ฐ์๋ค.
๋ณ๋ช
์ ํ์๋ฉด, ๋ฐ์คํฌํ์ ์ฐ๋๋ผ ์ด๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ง ์บ์นํ์ง ๋ชปํ๋ค .. ใ
.ใ
๐จ BEFORE
๋ง์ปค๋ฅผ ํ๋์ฉ ์ถ๊ฐํ ๋๋ง๋ค (์ง๋์ ๋ง์ปค๊ฐ ์นํ์ง ๋๋ง๋ค) ๋์ด๋๋ ํ๊ทธ๋ค์ด ๋ณด์ด์ญ๋๊น ..!
์ค๋ฅธ์ชฝ ์คํฌ๋กค๋ฐ๊ฐ ์ ์ ์งง์์ง๋ ๊ฑธ ๋ณด๋ฉด ์์ผ ๋๋๋ค.
ํ์ฌ๋ ๋ฐ์คํฌํ์์ ์ฐ๊ฑฐ๋ผ ํ๋ฉด์ด ํ์์ง๊ฑฐ๋ ๋์์ด ๋ฉ์ถ๋ ์๋ฌ๋ ๋ฐ์ํ์ง ์์ง๋ง
๋ ธํธ๋ถ์์๋ 5๊ฐ ์ด์๋ง ๋๋ ๋ฒ๋ฒ ์๋ค... ๐ฐ
์ง๋ API๋ useEffect๋ฅผ ์ฌ์ฉํด DOM Element์ ์ง์ ์น๋ ๋ฐฉ์์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์
์ง๋ ์์ ์ด๋ค ์ ๋ณด๋ฅผ ์น๊ธฐ ์ํด์ HTML Element๋ HTML ํ์์ ๋ฌธ์์ด์ ์ง์ ์ฝ์ ํด์ค์ผํ๋ค.
์ปดํฌ๋ํธ ์์ฑ๊ณผ ๋์์ ๋ ๋๋ง๋๋ ๋ฆฌ์กํธ์ ํน์ฑ๊ณผ ๋ฐ๋๋ก ๋์ํ๋ฏ๋ก
๋ ๋๋ง ์ดํ์ ์์ฑ๋ DOM์ ๋ด๊ฐ ์ง ์ ์ฐพ ์ ์ ์ง์์ค์ผํ๋ค.
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ
์นด์นด์ค ์ง๋ API๋ฅผ ๋ณด๋ฉด
setMap(๋ง์ปค) ์ฒ๋ผ ์ ๋ณด๋ฅผ ์ง๋ ์์ ํ์ํ๋ ๋ฉ์๋๋ ์์ง๋ง
setMap(null) ์ฒ๋ผ ์ ๋ณด๋ฅผ ์ง๋ ์์์ ์ง์ฐ๋ ๋ฉ์๋๋ ์๋ค.
๋ ํ์ํ ์ค๋ง ์์์ง, ์ง์ธ ์๊ฐ์ ์ถํธ๋ ํ์ง ๋ชปํ๋ค.
// ์ด์ ์ฝ๋ : ์์ฑ๋ง ํจ
// marker๋ฉ์๋์ mapํค์ ์์ฑ๋ ์ง๋๋ฅผ ๊ฐ์ผ๋ก ๋ฃ์ด์ฃผ๋ฉด
// setMap(๋ง์ปค) ๋ฉ์๋ ์์ด๋ ์ง๋ ์์ ํ์๋๋ค.
const markerForSearch = new kakao.maps.Marker({
image: markerImageForSearch,
map: map,
position: new kakao.maps.LatLng(
sliceLatLng(place.y),
sliceLatLng(place.x),
),
clickable: true,
});
// ์ดํ ์ฝ๋ : ์์ฑ + ํด์ ๊ฒธ๋น
// ์ด์ ์ ์ ์ฅ๋ ๋ง์ปค๊ฐ ์๋ค๋ฉด setMap(null)๋ฉ์๋๋ฅผ ํตํด ๋ง์ปค๋ฅผ ํด์ ์์ผ์ค ํ
// ์๋ก์ด ๋ง์ปค๋ก ์ํ๋ฅผ ์
๋ฐ์ดํธํ๋ ๋ฐฉ์์ ์ ์ฉํ๋ค.
const [, setBlueMarkers] = useState<any>(null);
setBlueMarkers((blueMarker: any) => {
// ๋ง์ปค ์ํ ๊ด๋ฆฌ
if (blueMarker !== null) {
blueMarker.setMap(null);
}
return marker;
});
์ด๋ฒ์ ๊ฐ๋ ์ ๋ณต์ตํ๋ฉด์ ์๋กญ๊ฒ ์๊ฒ๋ ์ฌ์ค์ด ํ๋ ์๋ค.
" ์ด๋ค ๊ฐ์ด ํ ๋น๋ ๋ณ์์ null์ ์ฌํ ๋นํ๊ฒ ๋๋ฉด
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๊ฐ์ด ์๋ค๊ณ ์ธ์ํด,
๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์๋ํด ํด๋น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค " ๋ ๊ฒ !!
์ ๊ทธ๋์ ์นด์นด์ค ์ง๋ API๊ฐ ์ด๋ ๊ฒ ์ค๊ณ๋ ๊ฑด๊ฐ ? ๋ ์ถ์ธก์ ํ๊ฒ๋๋ค ใ ใ
๋ฉ์๋์ ์ธ์๋ก null์ ๋ฐ์ผ๋ฉด ์ง๋ ์์์ ํด์ ์ํค๊ฒ๋ ?!
๐ AFTER
์๋ฌด๋ฆฌ ์ถ๊ฐํด๋ ๋ณด์ด์ง ์๋ ์คํฌ๋กค ๋ณด์ด์ญ๋๊น ... ์บฌ ๐ค ๐ค
ํ์ฌ ํ๋ก์ ํธ์ ํน์ฑ์ ์ง์ ์ถ๊ฐํ๋ ๋ง์ปค (ํ๋์), ๊ฒ์์ผ๋ก ๋์ถ๋๋ ๋ง์ปค (ํ์) ์ด 2๊ฐ์ง๊ฐ ์๊ณ
์ฌ๊ธฐ์ "์์ " ๊ธฐ๋ฅ๊น์ง ์ถ๊ฐํ๋๋ผ ์ ์ข ๋จน์์ง๋ง ๊ทธ๋๋ ๋ฟ๋ฏํ๋ค ! ใ ใ
100๊ฐ๋ฅผ ์ถ๊ฐํด๋ ๋ถํ๋ ์์๊ธด๋ค !-!
๐คจ ๋ ์์ ๋ณผ ๊ฒ
์นด์นด์ค ์ง๋๋ฅผ ๋ถ๋ฌ์๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๊ฒ useEffect๋ฅผ ์ฌ์ฉํด ๋ชจ๋ ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํ๋์ ๋ง์ปค, ํ์ ๋ง์ปค, ๋นจ๊ฐ์ ๋ง์ปค ์ด 3๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋ dependency๋ฅผ ์ฒ๋ฆฌํ๋ค.
๋๋ฌด ๋ง์ ๋ฆฌ๋๋๋ง์ด ์ผ์ด๋๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ...!
๋์์ ์๋๋๋ฐ, ์ฝ๋๊ฐ ์ค๋ณต๋๋ ๋๋์ด ๊ฐํ๋ค.
์์ฑ๋ ์ง๋ ๊ฐ์ฒด๋ฅผ redux ๋ก ๊ด๋ฆฌํด์ผํ๋ ...? ๋ ์๊ฐ๋ ํ๊ณ ํ .. ๐ค
์นด์นด์ค ์ง๋ api๋ฅผ ๋ฉ์๋๋ก ๋ง๋ค์ด๋๊ณ ์จ์ผ ํ๋ ...? (์ปค์คํ ?)
์ด์จ๋ , ๊ด๋ฆฌ์ ํ์์ฑ์ ๋๊ผ๋ค. api๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ ์์๋ด์ผ๊ฒ ๋ค !!-!!
๐ map api ๊ด๋ฆฌ ๋ฐฉ๋ฒ
'Dev-diary > ์ผ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฆฌํฉํ ๋ง : 4์ฃผ์ฐจ ํ์ ๋ง์ปค ์ ๋ณด์ฐฝ css ๋ณ๊ฒฝ (0) | 2022.02.21 |
---|---|
๋ฆฌํฉํ ๋ง : 4์ฃผ์ฐจ ํ์ input ์ฐฝ ํ ์คํธ ๊ธธ์ด ์ ํ (0) | 2022.02.17 |
Github profile ๊พธ๋ฏธ๊ธฐ & ์ ๋ฆฌ ing (0) | 2022.02.11 |
ํ๋ก์ ํธ ์๊ธฐ ๊ธฐ๋ก์ ์ ๋ฆฌํ๋ฉฐ. (0) | 2022.02.10 |
__filename , __dirname (0) | 2021.11.20 |
๋๊ธ