React์์๋ SVG๋ฅผ ๋ค๋ฅธ assets
์ฒ๋ผ ์ฌ์ฉํ ์๋ ์์ง๋ง component
๋ก ๋ถํ ํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
svgํ์ผ์ ์ด๋ฉด svg
ํ๊ทธ์ g
, path
๋ฑ์ ํ๊ทธ๋ค์ ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค๋ก svg๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ง๋ญ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ React์์ SVG๋ก ์ปดํฌ๋ํธํ ์ํค๋๋ฐ ๋ฐฉ๋ฒ์ด ์กฐ๊ธ ๊น๋ค๋กญ์ต๋๋ค.
SVGํ์ผ์ด ์๊ฑฐ๋ ๋น๊ต์ ๋ง๋ค๊ธฐ ์ฌ์ด ๋ชจ์์ด๋ผ๋ฉด ํ๊ทธ ์กฐ๊ธ์ ๋ณ๊ฒฝ์ผ๋ก ์ปดํฌ๋ํธํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ง๋ SVG์ฒ๋ผ ๋ชจ์์ด ๋ค์ฒด๋กญ๊ณ ๋ณต์กํ ๊ฒฝ์ฐ์๋ ํด๋น ๋ฐฉ๋ฒ์ด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋์ ์ ๋ ์ด๋ป๊ฒ Component
๋ก ๋ฐ๊ฟ ์ ์์๊น ๊ตฌ๊ธ๋งํ๋ค๊ฐ SVG To JSX
๋ผ๋ ํค์๋๋ฅผ ํตํด ์ข์ ์ฌ์ดํธ๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค.
์ ์ฌ์ดํธ๋ SVGํ์ผ์ insertํ๋ฉด JSX์์ ์ฌ์ฉ๊ฐ๋ฅํ SVG์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
์ด๋ฅผ ํตํด SVG๋ฅผ ์ปดํฌ๋ํธ๋ก ๋ณ๊ฒฝ์ผฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ SVG๋ฅผ ๊ตณ์ด ์ปดํฌ๋ํธ๋ก ๋ณํ์ํจ ์ด์ ๊ฐ ์์ต๋๋ค. SVGํ์ผ์ ์ปดํฌ๋ํธ๋ก ๋ณ๊ฒฝ์์ผ react์ hooks์ ์ง๋ path์ onClick event
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์์
๋๋ค.
์ง๋์ ๊ณณ๊ณณ์ ํด๋ฆญํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํด์ผํ๋ ํ๋ก์ ํธ์ฌ์ ์ด๋ป๊ฒ ๊ฐ๋ฐํ ๊น ์๊ฐํ๋ค๊ฐ ์ด๋ฐ ๋ฐฉ๋ฒ์ ํํ๊ฒ ๋์์ต๋๋ค.
์ธํฐ๋ท์ ํตํด ์ง๋ SVGํ์ผ์ ์ป๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ง๋์ฑ์ ๊ฐ๋ฐํ๋๋์ค ํ๋์ ๋ฌธ์ ์ ๋ถ๋ชํ๊ฒ๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ง๋ช ์ ๋ชจ๋ฅด๋ฉด ๋ง์งฑ๋๋ฃจ๋ฌต์๋๊ฐ?
๊ทธ๋ ์ต๋๋ค. ์ ๊ฐ ๊ฐ๊ณ ์๋ SVG๋ ์ค์ง ์ง๋ ํ๋๋ฟ์ด์์ต๋๋ค.
์ด์ฌํ ๊ตฌ์ํ๊ณ ๊ณํํ ํ๋ก์ ํธ๊ฐ ์๋ง์ด๋๋ ค๊ณ ํ์ ์ ๋ ์ง์ SVG๋ฅผ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ํ์์ต๋๋ค.
XD
๋ฅผ ์ด์ด ์ง๋ SVG๋ฅผ ๋ถ์ด๊ณ , ๊ตฌ์ญ์ ๋งก๊ฒ ์ด๋ฆ์ ์จ๋ด๋ ค๊ฐ์ต๋๋ค. ๋๋ฌด ์์์์ํ๊ฑฐ๋ ์์๊ฒ๋ค์ ํ๋์ ์ง์ญ์ผ๋ก ๋ชจ์์ ๋ถ์ด๊ณ , ๋๋ฌด ํฌ๊ฑฐ๋ ์ ๋งคํ ์ง์ญ์ ๋๋ถ, ์๋ถ๋ฑ์ผ๋ก ๋๋์ด์ ์ง์ญ์ ๋๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ํ์ฌ ๋๊ฐ์ SVGํ์ผ์ ์ป์ ์ ์์์ต๋๋ค.
<svg ... /> // ์ง์ญ
<svg ... /> // ์ง๋
์์ ๊ฐ์ด svg๋ฅผ ๋ฐฐ์นํ๊ณ css position
์ absolute
๋ก ์ค์ ํ์ฌ ์์ ์ฌ๋ฆฐ ํ ์ง๋ SVG์ onClick
์ด๋ฒคํธ๋ฅผ path
๋ง๋ค ์ ์ฉ์์ผฐ๋๋ ์ง์ญSVG์ ์ง๋SVG๊ฐ ๊ฐ๋ ค์ ธ์ ํด๋ฆญ ์ด๋ฒคํธ์ ์ ๊ทผ์ ํ์ง ๋ชปํ์์ต๋๋ค.
์ ๋ง ํ๋ฃจ์ข ์ผ ๊ตฌ๊ธ๋งํ๊ณ ์ฌ๋ฌ ํค์๋๋ก ๊ฒ์ํ์์ผ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ด์ ์นด์นด์คํก ์คํ์ฑํ ๋ฐฉ๊ณผ ํ์ด์ค๋ถ์ ํตํด ์ง๋ฌธ๋ ํ์์ต๋๋ค.
ํ์ง๋ง ํค์๋ ์ ํ์ ์คํจํ๋์ง ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ ํ๋ค์๊ณ ๊ณ์ํด์ ๊ณ ๋ฏผ๋ง ๋์ด๋ฌ์ต๋๋ค.
๊ทธ๋ฌ๋ค๊ฐ ๋ฑ ๋จธ๋ฆฌ๋ฅผ ์ค์น๊ณ ์ง๋๊ฐ๋ ์๊ฐ์ด ์์์ต๋๋ค.
๋ถ๋ช ํ CSS์์ ํด๋ฆญ์ ๋นํ์ฑํ ์ํฌ ์ ์์๊ฑฐ์ผ.
๊ทธ๋์ CSS์ ์ด์ฒจ์ ๋๊ณ ๊ตฌ๊ธ๋ง๋ฅผ ํ์๋๋ฐ.. ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด๋น ๋ฐฉ๋ฒ์ pointer-events: none;
์ด๋ผ๋ ์์ฑ์
๋๋ค.
MDN์์ pointer-events
์์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ณ ์์ต๋๋ค.
MDN๋งํฌ: ๊ทธ๋ํฝ ์์๊ฐ ์ด๋ค ์ํฉ์์ ํฌ์ธํฐ ์ด๋ฒคํธ์ ๋์์ด ๋ ์ ์๋์ง ์ง์ ํฉ๋๋ค.
pointer-events๋ฅผ none
์ผ๋ก ์ค์ ํด์ฃผ๋ฉด ์ด๋ฒคํธ์ ๋์์ผ๋ก ์ค์ ๋์ง ์์ต๋๋ค.
MDN์์ pointer-events: none
์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ณ ์์ต๋๋ค.
MDN๋งํฌ: ์์๊ฐ ํฌ์ธํฐ ์ด๋ฒคํธ์ ๋์์ด ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํด๋น ์์์ ์์์ด ๋ค๋ฅธ pointer-events ๊ฐ์ ์ง์ ํ ๊ฒฝ์ฐ, ๊ทธ ์์์ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด ๋๋ ์ด๋ฒคํธ ์บก์ฒ/๋ฒ๋ธ ๋จ๊ณ์์ none์ ์ง์ ํ ์์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ๋ฐ๋ํ ์ ์์ต๋๋ค.
์ด๋ฐ CSS๋ ์๊ตฌ๋.. ํ๋ฉฐ ๊ฐํํ์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์ Javascript(TS)๋ก ๊ฐ๋ฐํ๋ฉด์ ์๊ฒผ๋ ์ด์๋ค์ ๊ณต์ ํ๋ ค๊ณ ํฉ๋๋ค.
๋ค์ ํฌ์คํ ์์ ์์ธํ๊ฒ ์ค๋ช ํด๋๋ฆฌ๊ฒ ์ต๋๋ค.