사용자 이벤트 처리는 모든 반응형 웹사이트의 중요한 측면이며, Vue 애플리케이션은 이 표준에서 벗어나지 않습니다. Vue 프레임워크는 v-on 지시문을 통해 이벤트를 관리할 수 있는 쉽고 효율적인 방법을 제공합니다.

Vue에서 이벤트 바인딩이란 무엇인가요?

Vue.js 내에서 이벤트 바인딩을 활용하면 이벤트 리스너를 문서 객체 모델 내의 지정된 요소에 연결할 수 있습니다. 이벤트 발생이 감지되면 이벤트 리스너는 애플리케이션 내에서 미리 결정된 동작 또는 반응을 표시합니다.

“v-on” 지시문을 사용하면 Vue 애플리케이션 내에서 이벤트 바인딩을 쉽게 구현할 수 있으므로 클릭, 입력, 키 업과 같은 사용자 상호 작용을 모니터링할 수 있습니다.

v-on을 사용하여 이벤트 리스너를 요소에 연결하려면 지시문 내에 특정 이벤트를 매개 변수로 포함시켜야 합니다.

 <html>
<head>
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
  <div id="app">
    <button v-on:click="counter++">Click me</button>
    <p>{{ counter}}</p>
  </div>
  <script>
  const app = Vue.createApp({
    data() {
      return {
        text: 'Vue is awesome!',
        counter: 0
      }
    }
  })

  app.mount('#app')
  </script>
</body>
</html>

아래 수정된 버전을 참조하세요: “앞서 언급한 코드 스니펫은 클릭 발생에 주의를 기울이는 Vue 애플리케이션의 인스턴스를 보여줍니다. 이 특정 사례에서는 버튼을 사용하여 Vue 인스턴스의 데이터 개체 내에서 카운트 값을 1씩 증가시킵니다.

제공된 코드 스니펫은 Vue.js에서 더 자주 사용되는 `v-on` 지시문의 약어로 사용되는 `@` 기호를 활용하여 버튼 클릭 이벤트에 JavaScript 증분 연산 `counter++`를 첨부합니다.

 <button @click="counter++">Click me</button>

Vue 영역 내에서 이벤트 바인딩의 범위는 단순한 클릭을 넘어 키보드 입력, 호버링 및 기타 발생할 수 있는 다양한 경우를 포괄합니다.

이러한 경우 중 하나를 “v-on” 지시문에 첨부하려면 지정된 이벤트를 “클릭” 이벤트로 대체합니다.

 <button @keydown.enter="counter++">Click me</button>

앞서 언급한 코드는 키보드의 키를 눌렀을 때 버튼의 동작에 주의를 기울이는 리스너를 설정하며, 여기서 버튼이 초점을 유지하는 동안 버튼의 범위 내에서 키 입력이 발생할 때마다 증가 카운터 연산(카운터++)의 평가가 이루어집니다.

Vue에서 이벤트와 메서드 연결하기

대부분의 Vue 애플리케이션에서는 특정 이벤트가 발생하면 트리거되는 보다 복잡한 논리 연산을 관리할 수 있습니다. 이벤트와 메서드의 통합을 통해 특정 이벤트에 대한 응답으로 다양한 애플리케이션 활동을 실행할 수 있습니다.

이 글도 확인해 보세요:  Python을 사용하여 할 일 목록 프로그램 만들기

Vue의 옵션 객체 내의 메소드 속성은 Vue 애플리케이션에 향상된 반응성을 부여하는 데 중요한 기능을 합니다. 이 기능을 사용하면 다양한 이벤트와 관련된 복잡한 로직을 처리할 수 있습니다.

메서드를 사용하여 관리되는 이벤트를 표시하는 Vue 애플리케이션의 데모는 다음과 같습니다:

 <html>
<head>
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
  <div id="app">
    <button @click="increment">Add 1</button>
    

    <button @click="reduce">reduce 1</button>
    <p>{{ counter }}</p>
  </div>
  <script>
    const app = Vue.createApp({
      data() {
        return {
          text: 'Vue is awesome!',
          counter: 0
        }
      },
      methods: {
        increment(){
          this.counter = this.counter + 1
        },
        reduce() {
          this.counter = this.counter - 1
        }
      }
    })
    app.mount('#app')
  </script>
</body>
</html>

앞서 언급한 애플리케이션은 사용자가 데이터 도메인 내에서 숫자 값을 늘리거나 줄일 수 있는 두 가지 클릭 옵션으로 구성된 이벤트와 메서드 간의 상관 관계를 보여줍니다.

`@click` 데코레이터를 사용하여 애플리케이션은 카운터 값을 변경할 목적으로 `methods` 속성 내에 저장된 함수와 상호 작용할 수 있습니다.

카운터 값의 증가 및 감소 메서드의 사용자 지정은 클릭 이벤트에 연결할 때 이러한 메서드에 인수를 전달하여 원하는 대로 카운트를 증가 및 감소시킬 수 있습니다.

결론적으로, 이 연구 논문은 공립대학에서 기술 통합과 학생의 학업 성취도 사이에 유의미한 양의 상관관계가 있음을 입증했습니다. 이 연구 결과는 e-러닝 플랫폼, 온라인 리소스 및 교육 자료와 같은 다양한 형태의 교육 기술을 통합하면 학생들의 학습 경험과 전반적인 학업 성취도를 크게 향상시킬 수 있음을 시사합니다.

 <body>
  <div id="app">
    <button @click="increment(5)">Add 5</button>
    

    <button @click="reduce(3)">reduce 3</button>
    <p>{{ counter }}</p>
  </div>

  <script>
    const app = Vue.createApp({
      data() {
        return {
          text: 'Vue is awesome!',
          counter: 0
        }
      },
      methods: {
        increment(num){
          this.counter = this.counter + num
        },
        reduce(num) {
          this.counter = this.counter - num
        }
      }
    })

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

본 코드 블록은 앞의 Vue 애플리케이션을 기반으로 하여 버튼의 클릭 이벤트 핸들러와 관련된 메서드로 파라미터를 전송할 수 있도록 합니다.

이 글도 확인해 보세요:  JES에서 사운드를 임포트하고 재생하는 방법

Vue 인스턴스에서 ‘증가()` 및 ‘감소()` 메서드는 매개 변수 ‘num’과 함께 카운터 속성의 값을 각각 늘리거나 줄이는 데 사용할 수 있습니다.

이 예제는 Vue의 영역 내에서 메서드와 이벤트를 통합하는 과정을 보여줍니다. 메서드와 이벤트를 결합하면 보다 인터랙티브한 Vue 애플리케이션을 만들 수 있습니다.

Vue에서 예방 및 중지 수정자 살펴보기

Vue 프레임워크 내에 이벤트 수정자를 통합하면 특정 애플리케이션의 고유한 요구 사항을 충족하도록 맞춤화된 보다 정교한 이벤트 리스너를 개발할 수 있습니다. 이러한 이벤트 수정자의 기능을 활용하려면 Vue 코드베이스 내의 이벤트에 수정자를 추가해야 합니다.

“다음 날 일몰 한 시간 전에 회의가 계획되었습니다.

 <form @submit.prevent="handleSubmit">
  <input type="text" v-model="text">
  <button type="submit">Submit</button>
</form>

앞서 언급한 코드 스니펫은 양식의 “제출” 이벤트에 “prevent” 수정자를 첨부했는데, 이는 Vue 프레임워크에서 양식을 처리할 때 일반적으로 사용되는 방식입니다.

prevent 수정자는 일반적으로 페이지 새로 고침이 수반되는 양식 제출의 표준 동작을 방해하는 목적으로 사용됩니다.prevent 수정자를 활용하면 핸들 서브밋 메서드로 제출 이벤트를 처리하는 동안 중단 없이 작업을 진행할 수 있으므로 애플리케이션의 워크플로우가 원활하게 지속될 수 있습니다.

매우 유용한 수정자의 또 다른 인스턴스는 현재 DOM 트리를 넘어 이벤트의 전파를 종료하는 중지 이벤트 수정자입니다.

HTML 하위 요소의 표준 동작은 관련 이벤트가 문서 객체 모델(DOM)의 계층 구조를 통해 위로 이동하여 중간 조상 컴포넌트에 고정된 모든 수신 함수가 활성화되도록 유도하는 것입니다. 그러나 “중지” 자격 조건을 사용하여 이러한 전파를 차단하여 추가 수신 함수가 트리거되지 않도록 방지할 수 있습니다.

다음 코드 스니펫은 stop 한정자가 DOM 트리 내에서 이벤트의 진행을 제한하는 메커니즘을 설명하는 역할을 합니다:

 <body>
    <div id="app">
        <div @click="outerClick" class="outer">
            <div @click.stop="innerClick" class="inner">
              <button @click="buttonClick" class="button">Click me</button>
            </div>
        </div>
    </div>
    <script>
    const app = Vue.createApp({
        methods: {
            outerClick() {
                console.log('Outer click')
            },
            innerClick() {
                console.log('Inner click')
            },
            buttonClick() {
                console.log('Button click')
            }
        }
    });

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

제공된 HTML 코드 블록 내의 세 가지 요소에 세 개의 개별 이벤트 리스너가 추가되었습니다. 구체적으로 버튼 요소는 가장 안쪽에 클래스가 있는 div로 둘러싸여 있으며, 이 요소는 다시 가장 바깥쪽에 클래스가 있는 div로 둘러싸여 있습니다.

이 글도 확인해 보세요:  HTTP와 HTTPS: 차이점은 무엇인가요?

이후의 컴포넌트 트라이어드는 ‘클릭’ 발생을 감지하고 선택한 HTML 컴포넌트의 표시를 콘솔에 기록합니다. 앞서 언급한 코드 세그먼트에 대한 이해를 돕기 위해 아래에 추가 클래스 CSS 스타일이 첨부되어 있습니다:

 <head>
    <style>
    .outer {
      padding: 20px;
      background-color: black;
    }
    .inner {
      padding: 20px;
      background-color: gray;
    }
    button {
      padding: 10px;
      background-color: white;
      border: 2px solid black;
      font-size: 16px;
      font-weight: bold;
      cursor: pointer;
    }
    </style>
</head>

애플리케이션을 실행하면 결과 vue 앱은 다음과 같은 형식으로 표시됩니다:

버튼을 클릭하면 프로그램이 버튼클릭 메서드를 실행하고 콘솔에 메시지를 기록합니다. 또한 innerClick 메서드를 호출하는 작업도 수행합니다.

프로그램의 구현에서 innerDiv 요소에 연결된 이벤트 리스너 내에 stop 수정자가 삽입되어 outerClickListener 메서드가 작동하지 않아 이벤트가 문서 객체 모델(DOM) 계층 구조를 따라 더 이상 전송되지 못하도록 합니다.

중지 수정자가 없으면 지정된 버튼을 클릭하면 “buttonClick” 함수가 자동으로 호출되어 이벤트가 “innerClick” 메서드를 향해 위로 이동한 후 “outerClick” 함수를 트리거하게 됩니다.

웹 앱에서 이벤트 처리하기

이벤트 리스너를 요소에 연결하고 이벤트 발생 시 메서드를 호출하는 방법과 이벤트의 동작을 조정하기 위한 이벤트 수정자의 적용에 대한 설명과 함께 Vue에서 이벤트 바인딩의 활용을 시연합니다.

웹 애플리케이션의 기능은 특정 사용자 주도 이벤트의 발생에 따라 달라지며, 자바스크립트는 다양한 작업을 실행하는 데 활용됩니다. 이 프로그래밍 언어는 다양한 유형의 이벤트를 캡처하고 관리하기 위한 다양한 방법을 제공하여 대화형 소프트웨어 개발을 용이하게 합니다.

By 이지원

상상력이 풍부한 웹 디자이너이자 안드로이드 앱 마니아인 이지원님은 예술적 감각과 기술적 노하우가 독특하게 조화를 이루고 있습니다. 모바일 기술의 방대한 잠재력을 끊임없이 탐구하고, 최적화된 사용자 중심 경험을 제공하기 위해 최선을 다하고 있습니다. 창의적인 비전과 뛰어난 디자인 역량을 바탕으로 All Things N의 잠재 독자가 공감할 수 있는 매력적인 콘텐츠를 제작합니다.