refactor search,bookmark click - boostcampwm-2022/web33-Mildo GitHub Wiki
โ๏ธ ๋ถ๋ฐฐ๋ ์ด์
- ์ฐ๊ด ๊ฒ์์ด ํด๋ฆญ ์ ์ด๋ฒคํธ ๋ฐ์(#74)
- ์ธ๊ตฌ ๋ฐ๋ ์ ๋ณด ์๊ฐ ํ์(#83)
๐ฉ ๊ตฌํ ๋ชฉํ
- ์ฐ๊ด ๊ฒ์์ด ๋ฐ ๋ถ๋งํฌ ํด๋ฆญ ์ ํด๋น ์์น๋ก ์ด๋
- ๋ก๊ทธ์์ css ์ ์ฉ
- ํ์ฌ ๊ธฐ์ค ์๊ฐ ํ์
๐ ์ธ๋ถ ๋ชฉํ
- ๊ทธ๋ํ ๊ธฐ์ค ์๊ฐ ํ์
- ํ์ฌ ์ ๋ณด ๊ธฐ์ค ์๊ฐ ํ์
- ๋ถ๋งํฌ ๋ชฉ๋ก ๋ฐ ๊ฒ์ ๋ชฉ๋ก ์์ ์ง์ญ ํด๋ฆญ ์ ํด๋น ์ง์ญ์ผ๋ก ์ด๋
- ๋ก๊ทธ์์ css ์ ์ฉ
๐ฅ๏ธ ๊ตฌํ ๋ด์ฉ
MyInfoSideBar ์ฃผ์ ์ฌํญ ํด๊ฒฐ
-
์๋์ ๊ฐ์ ์ฃผ์ ๋ฉ์์ง๊ฐ ์ฝ์์ ์ฐํ
-
์ด์ ๋ ์๋์ ๊ฐ์ด ์ปดํฌ๋ํธ ์์ styled-component๊ฐ ์ ์ธ๋์๊ธฐ ๋๋ฌธ์ด๋ฏ๋ก, LogoutLink๋ฅผ MyInfoSideBar ๋ฐ์ผ๋ก ๋นผ์ ์๋ฌ ํด๊ฒฐ
... useEffect(() => { if (!userInfo || !areas) { return; } makeBookmarks(); }, [userInfo, areas]); const LogoutLink = styled.a` position: absolute; bottom: 5%; left: 50%; transform: translate(-50%, 0); font-size: 1rem; `; ...
ํด๋น ์ฅ์๋ช ํด๋ฆญ ์ ๋ง์ปค ์ด๋ฒคํธ ์ฌ์ฉ
-
atom์ markerArray์ ๋ชจ๋ ๋ง์ปค์ ์ ๋ณด๊ฐ ๋ค์ด์์
-
marker์ trigger ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฑ๋กํ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์คํ์ํฌ ์ ์์
-
์ขํ ๊ฐ์ผ๋ก ํด๋นํ๋ ๋ง์ปค๋ฅผ ์ฐพ์ trigger(โclickโ)์ ์คํํจ
-
MyInfoSideBar.tsx
// MainPage์์ ์ขํ ์ค์ setState ๊ฐ์ ธ์์ ํด๋ฆญํ ์์น๋ก ์ด๋ const onClickAreaName = (areaInfo: CoordinatesPopulationTypes) => { if (!setCoordinates) { return; } const { latitude, longitude } = areaInfo; const marker = markers.find( item => item.getPosition().x === longitude && item.getPosition().y === latitude ); if (!marker) { alert('ํผ์ก๋ ํํฐ๋ฅผ ํ์ธํด์ฃผ์ธ์!'); return; } marker.trigger('click'); setIsMyInfoSideBarOpen(false); };
-
RelatedAreaList.tsx
- e.target.id๋ RelatedAreaItem์์ ์ค์ ํ ์์ฑ๋ ์ง์ญ ์ด๋ฆ์
const RelatedSearchList: React.FC<RelatedSearchListProps> = ({ searchAreaName, relatedAreaInfo }) => { const [isEmptyRelatedList, setIsEmptyRelatedList] = useState(true); const markers = useAtomValue(markerArray); const onClickRelatedAreaList: React.MouseEventHandler< HTMLUListElement > = e => { if (e.target instanceof Element) { const { latitude, longitude } = relatedAreaInfo[e.target.id]; const marker = markers.find( item => item.getPosition().x === longitude && item.getPosition().y === latitude ); if (!marker) { return; } marker.trigger('click'); } };
๐ํ์ต ๋ด์ฉ
Event.target์ Id ํ์ ์ด ์๋ ๊ฒฝ์ฐ
- ํ๊ทธ(Element)์ ์์์ด๋ผ๊ณ ๋ช ์ํด์ฃผ๋ฉด event.target.id๋ฅผ ์ธ ์ ์์
ApexChart์์ label ์ค ๋ฐ๊ฟ
- ์๋์ ๊ฐ์ด ๋ฐฐ์ด๋ก ๋ฃ์ด์ค ๋ถ๋ถ์ ์ค๋ฐ๊ฟ์ด ๋จ
xaxis: {
categories: [
'Apples',
'Pineapples',
'Pears',
['Quararibea', 'cordata'],
['Prickly', 'Pear'],
'Tangerines'
]
}
๐ธ ๊ธฐํ
- RelatedAreaList์์ ์์น ์ด๋ ์ ๊ฒ์ ์ฐฝ ๋ซ์์ผํจ
- infodetail์์ ๊ทธ๋ํ ๋ ์ด๋ธ ๊ธ์์ ๋ฐ๊พธ๋๊ฒ ๋ฌ์ง ์์์ง