๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

FrontEnd/JavaScript

[JS] ์บ˜๋ฆฐ๋” ํด๋ฆญ์‹œ ๋ชจ๋‹ฌ ๋‹ซํžˆ๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ(+์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง)

๐Ÿ“Œ ๋ฌธ์ œ ํ˜„์ƒ 

์บ˜๋ฆฐ๋”์˜ ์ฒดํฌ์ธ ์ฒดํฌ์•„์›ƒ ๋‘ ๋ฒˆ ํด๋ฆญ์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ํ•œ ๋ฒˆ๋งŒ ํด๋ฆญํ•ด๋„ ์บ˜๋ฆฐ๋”๊ฐ€ ๋‹ซํžˆ๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒ

๋ฌธ์ œํ˜„์ƒ : ์ฒดํฌ์•„์›ƒ ์ด ์„ ํƒ๋˜๊ธฐ ์ „์— ๋ชจ๋‹ฌ์ฐฝ์ด ๋‹ซํžŒ๋‹ค.

๊ฒฐ๋ก  : ์ด ํ˜„์ƒ์€ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ํ˜„์ƒ์ธ๋ฐ ์ด ๊ฒƒ์€ e.stopPropagation() ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’˜ ๊ณผ์ • 

https://fe-developers.kakaoent.com/2022/220908-react-event-and-browser-event/

 

React ์ด๋ฒคํŠธ์™€ ๋ธŒ๋ผ์šฐ์ € ์ด๋ฒคํŠธ

์นด์นด์˜ค์—”ํ„ฐํ…Œ์ธ๋จผํŠธ FE ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

fe-developers.kakaoent.com

์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๊ธฐ ์ „์— ๋ฒ„์Šค์—์„œ ์ปค๋ฆฌ ์–ด๋ฆฌ๋ผ๋Š” ์–ดํ”Œ์„ ํ†ตํ•ด์„œ 

์นด์นด์˜ค ํ”„๋ก ํŠธ ์—”๋“œ ๋ธ”๋กœ๊ทธ์—์„œ ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง , ๋ฒ„๋ธ”๋ง ํ˜„์ƒ์— ๊ด€ํ•œ ๊ธ€์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. 

 

๊ทผ๋ฐ ๋‹ค์Œ๋‚  ์บ˜๋ฆฐ๋”๋ฅผ ์งœ๋Š”๋ฐ ์บ˜๋ฆฐ๋”๊ฐ€ ํด๋ฆญ ์‹œ ๋ฐ”๋กœ ๋‹ซํžˆ๋Š” ํ˜„์ƒ์„ ๋งˆ์ฃผํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ ์•„ ์ด๊ฑฐ ์–ด์ œ ๋ดค๋˜ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ํ˜„์ƒ์ธ๊ฐ€?๋ผ๋Š” ํŒ๋‹จ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. 

 

๊ทธ๋Ÿฌ๋ฉด ์ฝ˜์†”๋กœ๊ทธ๋กœ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฒคํŠธ๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ ์ „ํŒŒ๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

 ๋ชจ๋‹ฌ์ฐฝ์ด onClick ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—ด๋ฆฌ๊ณ , ์บ˜๋ฆฐ๋”๋ฅผ ํด๋ฆญ ์‹œ ์บ˜๋ฆฐ๋” ๊ฐ€ onClick์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฐํžˆ๊ณ  ๋‚˜์„œ ์บ˜๋ฆฐ๋”๋ฅผ ํด๋ฆญํ–ˆ๋˜ onClick์ด๋ฒคํŠธ๊ฐ€ ๋ชจ๋‹ฌ๊นŒ์ง€ ์ „๋‹ฌ๋˜์–ด์„œ ๋ชจ๋‹ฌ์ด onClick์ด๋ฒคํŠธ๋กœ ์ธํ•ด์„œ ๋‹ซํžˆ๋Š” ํ˜„์ƒ์ธ ๊ฒƒ ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ์ด ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผ ํ• ๊นŒ์š” ?? 

 

์–ด์ œ ๋ณธ ํ”„๋ก ํŠธ ์—”๋“œ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ์—์„œ๋Š” event.stopPropagation๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‚ด์šฉ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

์ด๊ฒƒ์„ ์ ์šฉํ•˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ์ „ํŒŒ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์„๊นŒ์š”?? 

๋” ์ด์ƒ ์บ˜๋ฆฐ๋”๋ฅผ ํด๋ฆญํ•ด์„œ ์ด๋ฒคํŠธ๊ฐ€ ์ „ํŒŒ๋˜์ง€ ์•Š๊ณ  ์ฒดํฌ์ธ, ์ฒดํฌ์•„์›ƒ ์ด ์ž˜ ์ฐํžˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!!