UI ์ปดํฌ๋ํธ๋ฅผ ๊ทธ๋ฆฌ๋ ๊ณผ์ ์์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ์๋ A๋ผ๋ ์ปดํฌ๋ํธ ์์ B๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฆฌ๊ณ , ํด๋น B๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋์์ผฐ์ ๋, A ์ด๋ฒคํธ๋ ์์ฉ์ด ๋๋ ๊ฒ์ ๋ณธ ์ ์ด ์์ ๊ฒ์ด๋ค.
์ํ๋ ์ด๋ฒคํธ๋ง ์๋ํ๊ณ ์ถ๋ค๋ฉด? ์ด๋ฒคํธ ๋ฒ๋ธ๋ง
์ ๋ํ์ฌ ๊ผญ ์ง๊ณ ๋์ด๊ฐ์ผํ๋ค.
์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ด๋ ํน์ ํ๋ฉด ์์์์ ์ด๋ฒคํธ ๋ฐ์ ์ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ ์์์ ํ๋ฉด ์์๋ค๋ก ์ ๋ฌ๋์ด ๊ฐ๋ ์ฆ, ์ต์๋จ์ ๋ถ๋ชจ ์์๋ฅผ ๋ง๋ ๋ ๊น์ง ๋ฐ๋ณต๋๋ฉด์ ํธ๋ค๋ฌ๊ฐ ๋์๋๋ ํ์์ ์๋ฏธํ๋ค. ํ๋จ์ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด ์กฐ๊ธ ๋ ์ดํด๊ฐ ์ฝ๋ค.
์ฝ๋๋ก ์์ฑํ๋ฉด ์ด๋ฌํ๋ค.
<body>
<div class="adult">
<div class="child">
<div class="baby">
</div>
</div>
</div>
</body>
์๋จ์ adult
div ๊ฐ ํ๋จ์ผ๋ก child
, baby
๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ clickEvent
๋ฅผ ํตํ์ฌ
ํด๋น UI์ ์ปดํฌ๋ํธ๋ฅผ ํด๋ฆญํ๋ฉด ๊ฐ์ด ์ข
์๋์ด์๋ div ์ธํธ ๋ด์์ ์ตํ์ ์์๋ถํฐ ๋ถ๋ชจ์์๊น์ง ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋๋ฉฐ ์ฐจ์ธต ์คํ๋๋ค.
์์ ์ด๋ฏธ์ง๋ ํ๋ก์ ํธ์์ ๋ง๋ค์๋ ์บ ํ์ฅ ์ ๋ณด ์กฐํ ์๋น์ค์ ๊ฒฐ๊ณผ ์ปดํฌ๋ํธ์ธ๋ฐ, ์บ ํ์ฅ์ฌ์ง์ ๋๋ฅด๊ฒ ๋๋ฉด, ํด๋น ์บ ํ์ฅ ์์ธ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ ํ์ด์ง์ ์ ๊ทผํ ์ ์๊ฒ๋๋ ๊ตฌ์กฐ๋ก ๋์ด์๋ค. ๊ทธ๋ฐ๋ฐ ์ด ์ปดํฌ๋ํธ๋ฅผ ํฌ๊ฒ ๊ฐ์ธ๊ณ ์๋ div๊ฐ ๋ด์ ํด๋น ์ฌ์ง๊ณผ ๊ทธ๋ฆฌ๊ณ , ๋ถ๋งํฌ ์ปดํฌ๋ํธ๊น์ง ํ์ ์์๋ก ๊ตฌ์ฑ๋์ด์๋ค. ๊ทธ๋์ ๋ถ๋งํฌ๋ง ์๋์ ์ํค๊ณ ์ถ์ด๋, ์์์ ์ฌ์ง์ ๋๋ฅด๊ฒ ๋๋ ์ด๋ฒคํธ๊น์ง ์ ์ฉ๋์ด๋ฒ๋ฆฌ๊ฒ ๋๋๋ฐ, ์ด๊ฒ์ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง
์ ์๋ผ๊ณ ๋งํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํด๊ฒฐํด์ผ๋๋๊ฐ..!
<CampImgBox>
<BookmarkBorderIcon
onClick={(e) => {
e.stopPropagation();
unpick(camp.campId);
}}
>
<img
src="/images/picked2.svg"
alt="Bookmarked"
style={{ width: "36px", height: "36px" }}
/>
</BookmarkBorderIcon>
</CampImgBox>
์ด ์ฝ๋๋ ์์ ๋ถ๋งํฌ ์ปดํฌ๋ํธ์ ์ผ๋ถ๋ถ์ ๋ฐ์ทํ ๊ฒ์ด๋ค. (React ๋ก ๋ง๋ค์์ต๋๋ค. ์ฐธ๊ณ ๋ฐ๋์)
onClick์ด๋ผ๋ ํด๋ฆญ์ด๋ฒคํธ์ ์์ฉํด์ผ๋๋ ํจ์ ์์ ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๊ณ e.stopPropagation()
์ด ์ฐ์ฌ์๋ ๊ฒ์ ํ์ธํ ์ ์๊ฒ๋๋๋ฐ, ์ด stopPropagation
์ผ๋ก ์์ ์์์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ ๋ฒ๋ธ๋ง์ ์ต์ ํ ์ ์๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ด ์ฐ๋ ค๋๋ ์ปดํฌ๋ํธ๊ฐ ์๋ค..? ๊ทธ๋ ๋ค๋ฉด ์ด stopPropagation ์ ๊ผญ ์ฌ์ฉํด๋ณด์.
๋ง์ฝ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง ๋ฟ๋ง ์๋๋ผ ํด๋น ์์์ ํ ๋น๋ ๋ค๋ฅธ ํธ๋ค๋ฌ๋ค์ ๋์์ ๋ชจ๋ ๋ง์ผ๋ ค๋ฉด stopImmediatePropagation()
์ ์ฌ์ฉํด๋ณด์. ๊ทธ๋ ๊ฒ ํ๋ฉด ์์์ ํ ๋น๋ ํน์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํธ๋ค๋ฌ๋ค์ด ๋ชจ๋ EMP๋ฅผ ๋ง์ ๋ฏ, ๋์์ ํ์ง ์๊ฒ ๋๋ค.
์ด๋ฒคํธ ๋ฒ๋ธ๋ง๊ณผ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์งํ๋๋ ์ด๋ฒคํธ ์ ํ ๋ฐฉ์์ ์ด๋ฒคํธ ์บก์ฒ๋ง
์ด๋ผ๊ณ ํ๋ค. ๋ฒ๋ธ๋ง์ ๋นํด์ ์ ์ฉ๋๋ ์ฌ๋ก๊ฐ ๊ต์ฅํ ์ ๋ค. ํ์ง๋ง ์บก์ฒ๋ง์ด ์ฐ๋ ค๋๋ค๋ฉด removeEventListner
๋ก ํธ๋ค๋ฌ๋ฅผ ์ง์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.