์ค๋์ ์๋ ์์ฑ ํธ์ง๊ธฐ ๊ตฌํ ๊ฐ์๋ฅผ ๋ค์๋ค. ๋กํ ๋๊ป์ ์ฌ์ฉ์๋ฅผ ์ํ ์นํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ค์ ์๋ ค์ฃผ์
จ๊ณ , ๊ทธ๊ฒ๋ค์ด ๋งค์ฐ ํฅ๋ฏธ๋ก์ ๋ค...๊ฐ๋
๋ง ์ ํ๊ณ ์์ง ์๋ฒฝํ ๊ตฌํํ์ง๋ชปํ์ง๋ง, ๋
ธ์
ํด๋ก ํ๋ก์ ํธ๋ฅผ ํตํด ์ด์ฌํ ์ฐ์ตํด๋ด์ผ๊ฒ ๋ค.
์ฌ์ฉ์ ์
์ฅ์์ ์๊ฐํ๋ ๊ฐ๋ฐ์๊ฐ ๋๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋์ง๊ฐ ๊ตฌ์ฒดํ๋ ๋๋์ด๋ผ ๊ธฐ๋ถ์ด ์ข์๋ค.
๋ฐ๋ธ์ฝ์ค๋ฅผ ํ๋ฉด์ ๊ฐ์ฅ ์ข์์ ์ ํผ์๋ ๋ง์ฐํ๋ ๊ณต๋ถ ๋ฐฉํฅ ๋ฑ์ด ์ด์ ๋ ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๊ณต๋ถํด์ผํ ์ง ํ์คํ ์๊ฒ ๊ณ , ๋ฉํ ๋๊ณผ ์ข์ ๋๋ฃ๋ค ๋๋ถ์ ํ์ด ๋๋ค๋ ๊ฒ์ด๋ค~๐ฅณ
1. ์ด๋ฒคํธ ์์(Event Delegation)
2. ๋๊ด์ ์ ๋ฐ์ดํธ
3. ๋๋ฐ์ด์ค(Debounce)
์ค๋์ ํ๋์ ์ฃผ์ ๋ฅผ ์ ํ์ง์๊ณ , ๊ฐ ์ฉ์ด์ ๋ํด ๊ฐ๋จํ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
์ด๋ฒคํธ ์์์ ์ดํดํ๋ ค๋ฉด ๋จผ์ ์ด๋ฒคํธ ์บก์ฒ๋ง๊ณผ ๋ฒ๋ธ๋ง์ ๋ํด ์์์ผํ๋ค. ์์ ๋งํฌ์ ์์ธํ ์ค๋ช ๋์ด์๋ค.
์ด๋ฒคํธ ์บก์ฒ๋ง๊ณผ ๋ฒ๋ธ๋ง์ ํ์ฉํ์ฌ ์์์ ๊ณตํต ์กฐ์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋จ ํ๋๋ง ํ ๋นํด ์ฌ๋ฌ ์์๋ฅผ ํ๊บผ๋ฒ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ
$todoItems.forEach($item => {
$item.addEventListener('click', e => {
// ์ด๋ฒคํธ ๋ด์ฉ
})
}
์ด๋ฒคํธ ์์์์ด ์์ ๊ฐ์ด forEach๋ฌธ
์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋
๋ช๊ฐ์ง ๋ฌธ์ ์
์ด ์กด์ฌํ๋ค.
- ์๋ก ์ถ๊ฐ๋๋(๋์ ์ผ๋ก ๋ฑ๋ก๋๋) ์์์๋ ์ด๋ฒคํธ๊ฐ ์ ์ฉ๋์ง ์๋๋ค.
- ์์๊ฐ ๋ง์์ง๊ฒฝ์ฐ, ๋ชจ๋ ์์์ ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง์์ง๊ณ ๋์๊ฐ ๋ฐ์ํ ์ ์๋ค.
$todoList.addEventListener('click', e => {
const { id } = e.target.dataset;
console.log(`${id}๊ฐ ํด๋ฆญ๋์์ต๋๋ค!`);
});
์์ ์ฝ๋์ฒ๋ผ ์ฌ๋ฌ todoItem์ ๊ฐ์ง๊ณ ์๋ todoList(๋ถ๋ชจ ์์)์ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋ก
ํด์ฃผ๊ณ ,
e.target์ ์ด์ฉํด ์ค์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์
๋ฅผ ์ฐพ์ ๊ฐ ์์๋ค์ ๋ํ ์ด๋ฒคํธ ์ ์ด๊ฐ ๊ฐ๋ฅํด์ง๋ค.
์ด๋ฒคํธ ์์์ ์ฌ์ฉํ๋ค๋ฉด,
๋์ ์ผ๋ก ๋ฑ๋ก๋๋ ์์์๋ ์ด๋ฒคํธ๊ฐ ์ ์ฉ๋๋ฉด, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ญ์ ์ค์ผ ์ ์๋ค.
API๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ํ๋ฉด์ ๋ ๋๋งํ ๊ฒฝ์ฐ ์๋ฒ์ ๋ฐ๋ผ ์ฌ์ฉ์๊ฐ ๋๋๋งํ ์ง์ฐ์ฑ
์ด ๋ฐ์ํ ์ ์๋ค.
์ด๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ ์ ์ ์ ๋ ฅ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ํ๋ฉด์ ๋ ๋๋งํด์ฃผ๊ณ ,
์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ๋ฉด ๊ทธ ์ต์ ์ ๋ณด๋ก ์ฌ๋ ๋๋ง์ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก ๋๊ด์ ์ ๋ฐ์ดํธ์ด๋ค.
์ฆ, ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ์ ์์ ๊ฒ์ด๋ผ๋ ๋๊ด์ ์ธ ์๊ฐ
์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฌํ ์ด๋ฆ์ด ์ง์ด์ก๋ค๊ณ ๋ณผ ์ ์๋ค. ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ ์ ๊ณต
์ด ๊ฐ๋ฅํ๋ค.
์ด๋ฒคํธ๋ฅผ ๊ทธ๋ฃนํํ์ฌ ํน์ ์๊ฐ์ด ์ง๋ ํ ํ๋์ ์ด๋ฒคํธ๋ง ๋ฐ์ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
์ฐ์ด์ด ํธ์ถ๋๋ ์ด๋ฒคํธ๋ค ์ค ๋ง์ง๋ง ์ด๋ฒคํธ๋ง ํธ์ถํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
๋
ธ์
๊ณผ ๊ฐ์ ์๋ ์ ์ฅ ํธ์ง๊ธฐ๋ฅผ ์๋ก ๋ค์๋ฉด, ์ฌ์ฉ์๊ฐ ๊ธ์๋ฅผ ์ฐ์์ ์ผ๋ก ์
๋ ฅํ๋ค๋ฉด ์ ์ฅํ์ง์๊ณ ,
์ฐ์์ ์ผ๋ก ์
๋ ฅํ๋ค๊ฐ ์
๋ ฅ์ ๋ช ์ด๊ฐ ๋ฉ์ถ๋ค๋ฉด ๊ทธ๋ ์ ์ฅ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ๋ฐฉ์์ด๋ผ ๋ณผ ์ ์๋ค.
์ด๋ ๋ถํ์ํ ์์ ๋ญ๋น์ ์ด๋ฒคํธ ๋ฐ์ ํ์๋ฅผ ์ค์ฌ์ค๋ค.
ํด์ผํ ์ผ์ ๋ง์ง๋ง ๋ฌด์ธ๊ฐ๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ ๊ทธ๋ฆฌ๊ณ ์ข์ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๊ณ ์๋ค๋ ๊ฒ์ ๊ฐ์ฌํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์ฐ๋ฉด ๋ฐฐ์ธ์๋ก ์ฌ๋ฏธ์๊ณ ์ ๊ธฐํ๋ค.
์ ๋ง ์ธ์ ๊ฐ ๊ณ ๊ฐ์ ์ํ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์์ ๋๋ฅผ ์์ํ๋ฉฐ ๊ณ์ํด์ ์ด์ ์ ๋ถํ์ฐ๊ณ ์ํ๋ค.
๋์ ๋์ผ, ์ฒด๋ ฅ์, ์๋ชฉ์, ๋์ ๋ฒํ
จ์ค ์ ๋ฐ~~~๐ฅ