Vue 3의 Keyup 및 Keydown 이벤트 핸들러
6645 단어 vueeventdrivenjavascript
keyup
및 keydown
기능과 싸우느라 너무 오랜 시간을 보냈습니다. 나는 ctrl+period
키보드 이벤트를 처리하고 싶었고 내 사용 사례를 다루는 문서의 일부를 찾는 데 영원히 걸렸습니다. 이 가이드가 시간을 절약할 수 있기를 바랍니다!참고: 이 가이드는 Vue 3용입니다! Vue 2를 사용 중이라면 다른 가이드를 찾아보세요.
@keyup 및 @keydown
일부 기본 키 누르기 시나리오는 매우 간단합니다. 예를 들어 누군가 "Enter"키를 누를 때 캡처하고 싶습니까? 넌 할 수있어:
<input @keyup.enter="onPressEnter" />
또는 키를 놓았을 때가 아니라 눌렀을 때 이벤트가 발생하기를 원할 수도 있습니다.
<input @keydown.enter="onPressEnter" />
onPressEnter
를 정의하고 템플릿에 노출해야 한다는 점을 명심하십시오! 옵션 API를 사용 중이라면 메서드로 정의해야 함을 의미하고 setup()
를 사용 중이라면 setup()
함수에서 반환해야 함을 의미합니다.어떤 키가 작동합니까?
to the docs에 따르면 공통 키에 별칭이 제공됩니다.
.enter
.tab
.delete
("Delete"및 "Backspace"키를 모두 캡처함) .esc
.space
.up
.down
.left
.right
그러나 다른 키를 캡처하려면 어떻게 해야 합니까? 글쎄요 문서는 불행히도 이 사용 사례에 대해 대부분 얼버무립니다(적어도 나는 그것이 언급된 곳을 찾을 수 없었습니다)
그러나 Vue2 -> Vue3 migration guide에서 유용한 정보를 찾았습니다. 수정자로 사용하려는 키에 대해
kebab-case
이름을 사용할 수 있는 것으로 나타났습니다. 예를 들어:<input @keyup.a="onPressA" />
<input @keyup.page-down="onPressPageDown" />
쉼표와 같은 일부 구두점 문자에도 작동합니다.
<input @keyup.,="onPressComma" />
이제 우리는 내 문제에 도달합니다.
What if I want to capture an event on the period key?
다음은 작동하지 않습니다.
<input @keyup..="onPressPeriod" />
대신 모든 keydown/keyup 이벤트를 캡처하는 핸들러를 작성하고 올바른 속성을 수동으로 감시해야 합니다.
<input @keyup="onPress" />
const onPress = (e) => {
if (e.key !== ".") {
// guard against non-period presses
return;
}
onPressPeriod()
};
시스템 수정자
"시스템 수정자"또는 "키 조합"의 주제는 explained well in the docs 이므로 많은 시간을 할애하지 않겠습니다. 사용 가능한 네 가지 옵션은 다음과 같습니다.
.ctrl
.alt
.shift
.meta
("meta"키는 Apple 키보드의 "command"이고 Windows 키보드의 "windows"키입니다.) ctrl+enter
에서 이벤트를 발생시키려면 수정자를 연결하면 됩니다.<input @keyup.ctrl.enter="onPressEnter" />
이벤트 수정자
<input @keyup.ctrl.stop="onPressCtrl" />
구문적으로 이벤트 수정자는
@keyup
키워드에도 연결됩니다. 옵션은 다음과 같습니다..stop
- 다른 핸들러로의 이벤트 전파 중지.prevent
- 이벤트의 기본 처리 방지(예: 양식 제출을 위한 페이지 다시 로드).self
- 자식이 아닌 이 요소에 대한 이벤트만 실행합니다.capture
- 하위 수준에서 이벤트를 처리하기 전에 여기에서 이벤트를 처리합니다.once
- 이 이벤트를 최대 한 번 트리거합니다.passive
- 기본 동작을 즉시 처리하고 차단하지 않고 여기에서도 처리합니다.정확한 수식어
지정한 정확한 키를 누를 때 핸들러를 실행하려면
.exact
수정자를 사용하십시오.<!-- this will fire even if alt or another key is also pressed -->
<button @keyup.ctrl="onPressCtrl">A</button>
<!-- this will fire if ONLY ctrl is pressed -->
<input @keyup.ctrl.exact="onPressCtrl" />
마우스 버튼 수정자, 속지 마세요
처음에는
.left
와 .right
가 화살표 키를 의미한다고 가정했습니다. 사실, 그들은 마우스 버튼을 참조합니다. 다음 세 가지 수정자를 모두 사용하여 이벤트를 세 개의 마우스 버튼으로 제한할 수 있습니다..left
.right
.middle
Reference
이 문제에 관하여(Vue 3의 Keyup 및 Keydown 이벤트 핸들러), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bootdotdev/keyup-and-keydown-event-handlers-in-vue-3-2jn8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)