본문 바로가기

Frontend/Vue3

[Vue3] 이벤트 핸들링 (v-on)

728x90
반응형

1. Inline Handlers

- 주로 간단한 상황에 사용한다.

- v-on은 생략하고 @만 쓸 수 있다.

<body>
    <div id="app">
      <button @click="count++">Add 1</button>
      <p>Count: {{ count }}</p>
    </div>
    
    <script>
      const { createApp, ref } = Vue

      const app = createApp({
        setup() {
          const count = ref(0)

          return {
            count,
          }
        },
      })

      app.mount("#app")
    </script>
  </body>

2. Method Handlers

- Inline handlers로는 불가능한 대부분의 상황에서 사용한다.

- 기본 DOM Event 객체를 자동으로 수신한다.

<body>
    <div id="app">
      <button @click="myFunc">Hello</button>
    </div>

    <script>
      const { createApp, ref } = Vue

      const app = createApp({
        setup() {
          const myFunc = function (event) {
            console.log(event)
            console.log(event.currentTarget)
            console.log(`Hello ${name.value}!`)
          }

          return {
            myFunc,
          }
        },
      })

      app.mount("#app")
    </script>
  </body>

 

Inline Handler에서의 메서드 호출

- 메서드 이름에 직접 바인딩하는 대신 Inline Handler에서 메서드를 호출할 수도 있다.

- 이렇게 하면 기본 이벤트 대신 사용자 지정 인자를 전달할 수 있다.

 

Inline Handlers에서의 event 인자에 접근하기

- Inline Handlers에서 원래 DOM 이벤트에 접근하기

- $event 변수를 사용하여 메서드에 전달

Event Modifiers

- event.preventDefault()와 같은 구문을 메서드에 작성하지 않도록 함

  => 메서드는 DOM 이벤트에 대한 처리보다는 데이터에 관한 논리를 작성하는 것에 집중할 것

- stop, prevent, self 등 다양한 modifiers 제공

Key Modifiers

- 키보드 이벤트를 수신할 때 특정 키에 관한 별도 modifiers를 사용할 수 있음

- 예시) key가 Enter일 때만 onSubmit 이벤트 호출하기

<input @keyup.enter="onSubmit" />
728x90
반응형