v-on์ด๋ @ ์ผ๋ก ์คํ~!
- v-on์ ๋ฉ์๋ ์ด๋ฆ์ ์ง์ ๋ฐ์ธ๋ฉ ํ๊ฑฐ๋ ์ธ๋ผ์ธ ๋ฉ์๋ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ ์ ์์
@์ด๋ฒคํธ์ด๋ฆ=โ๋ฉ์๋์ด๋ฆโ
or@์ด๋ฒคํธ์ด๋ฆ=โ๋ฉ์๋์ด๋ฆ()โ
- ๋ฉ์๋ ์ด๋ฆ์ ์ง์ ๋ฐ์ธ๋ฉํ๋ค๋ฉด ํด๋น ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ event ๊ฐ์ฒด๊ฐ ์๋์ผ๋ก ๋์ด์จ๋ค
- ์ธ๋ผ์ธ ๋ฉ์๋ ํธ๋ค๋ฌ๋ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ด์ค ๊ฒ๋ง ๋์ด์จ๋ค
- ํธ์ถํ ๋ $event๋ก ๋งค๊ฐ๋ณ์๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ค ์ ์๋ค
- ํธ์ถํ ๋ฉ์๋๊ฐ ๋๊ฐ์ง ์ด์์ผ ๋, ์ธ๋ฏธ์ฝ๋ก ์ด๋ ์ผํ(vue3๋ถํฐ)๋ก ๊ตฌ๋ถํด์ ์ฌ๋ฌ๊ฐ ํธ์ถํ ์ ์๋ค
์ด๋ฒคํธ ์์์ด
์ ๋ฏธ์ฌ๋ก event์ ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ์คํํ ์ ์๋ค
- .stop โ ==event.stopPropagation(), ๋ฒ๋ธ๋ง ๋ฐฉ์ง
- .capture โ == ์ต์ {capture: true}, ์บก์ณ๋ง ํ์ฉ (์์ ์ด๋ฒคํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ๋ถ๋ชจ ์์์ ์ด๋ฒคํธ๊ฐ ๋ด๋ ค์ค๋ฉด์ ์คํ๋จ)
- .prevent โ == event.preventDefault()
- .once โ ์ด๋ฒคํธ๋ฅผ ์ต์ด ํ๋ฒ๋ง ์คํ, ๊ฑธ์ด๋ ์ ๋ฏธ์ฌ๋ค๋ ์ต์ด ํ๋ฒ๋ง ์ ํจํ๋ค
- .self โ event.currentTarget์ event.target๊ฐ ๊ฐ์ ๋๋ง ์ด๋ฒคํธ ์คํ. ์ฆ, ์์์์์๋ ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ง ์๋๋ค
- .passive โ == ์ต์ {passive: true}, ์ด๋ฒคํธ ์คํ๊ณผ ๋ฆฌ์ค๋ ํธ์ถ์ ๋ณ๊ฐ๋ก ๋
@click.prevent.stop
์ฒด์ด๋ ๋ฐฉ์์ผ๋ก ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ํ๋ฒ์ ์คํ ๊ฐ๋ฅ
ํค ์์์ด
- ํค๋ณด๋ ์ด๋ฒคํธ(keyup, keydown ๋ฑ)์ผ ๋ ํค ์์์ด๋ฅผ ํตํด โevent.keyโ๋ฅผ ์ง์ ํ ์ ์๋ค
- ์ญ์ ์ฒด์ด๋ ๋ฐฉ์์ผ๋ก ์ฌ๋ฌ ์์์ด๋ฅผ ์ฐ๊ฒฐํด์, ํด๋น ํค๋ฅผ ๋์์ ๋๋ฌ์ผ ์คํ๋ ์ ์๊ฒ ํ๋ค
@keydown.enter @keydown.esc @keydown.ctrl @keyup.arrow-down
ํค ๋ชฉ๋ก ์ฐธ๊ณ : https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values
.exact ์์์ด
ํค์ด๋ฒคํธ์ ์ฐ๊ฒฐ๋์ด ์๋ ์์์ด๋ง ๋๋ ์ ๋ ๋ฆฌ์ค๋ ๋์, ์ฐ๊ฒฐ๋์ด ์์ง ์์ ํค์ ๊ฐ์ด ๋๋ฅด๋ฉด ๋์ํ์ง ์์
<!-- Ctrl๊ณผ ํจ๊ป Alt ๋๋ Shift๋ฅผ ๋๋ฅธ ์ํ์์๋ ํด๋ฆญํ๋ฉด ์คํ๋ฉ๋๋ค. --> <button @click.ctrl="onClick">A</button> <!-- ์ค์ง Ctrl๋ง ๋๋ฅธ ์ํ์์ ํด๋ฆญํด์ผ ์คํ๋ฉ๋๋ค. --> <button @click.ctrl.exact="onCtrlClick">A</button> <!-- ์์คํ ์ ๋ ฅํค๋ฅผ ๋๋ฅด์ง ์๊ณ ํด๋ฆญํด์ผ์ง๋ง ์คํ๋ฉ๋๋ค. --> <button @click.exact="onClick">A</button>
๋ง์ฐ์ค ๋ฒํผ ์์์ด
.left
: ์ผ์ชฝ ๋ง์ฐ์ค
.right
: ์ค๋ฅธ์ชฝ ๋ง์ฐ์ค
.middle
: ํ