본문 바로가기
Programming/Vue

[Vue] Vue에서 event를 다루는 방법

by 혀코 2022. 9. 7.

 

안녕하세요. 혀코입니다.

이번 시간에는 Vue에서 event를 다루는 방법에 대해서 알아보겠습니다.

 

클릭해서 숫자가 1씩 증가하는 프로그램을 만들어 보겠습니다.

<template>
  <h1 v-on:click="add">{{ count }}</h1>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    add() {
      this.count += 1
    }
  }
}
</script>

 

이때, v-on 은 이벤트 바인딩할 때 사용하는 것으로 약어로 다음과 같이 @click으로 대체해서 사용할 수 있습니다.

 

<template>
  <h1 @click="add">{{ count }}</h1>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    add() {
      this.count += 1
    }
  }
}
</script>

 

다음으로 버튼을 클릭했을 때 버튼의 text를 출력해 보도록 하겠습니다.

<template>
  <button @click="message">Hello World</button>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    message(e) {
      console.log(e.target.textContent)
    }
  }
}
</script>

 

이벤트 객체 e를 받아서 해당 버튼 태그의 textContent 즉 텍스트를 출력할 수 있습니다.

또한, click 이벤트를 받아서 함수를 실행할때 parameter 값을 지정해서 넘겨줄 수 있습니다.

 

<template>
  <h1>{{ count }}</h1>
  <button @click="add(1)">+1</button>
  <button @click="add(2)">+2</button>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    add(n) {
      this.count += n
    }
  }
}
</script>

 

 

그리고 클릭 이벤트를 받아서 parameter 값과 event 값을 동시에 넘겨줘서 함수의 실행값으로 사용하는 방법은 다음과 같습니다.

 

<template>
  <button @click="message('Hello', $event)">Hello</button>
</template>

<script>
export default {
  methods: {
    message(text, e) {
      console.log(text)
      console.log(e)
    }
  }
}
</script>

 

클릭 이벤트를 받아서 두개 이상의 함수를 동시에 실행하고자 할때는 넘겨줄 parameter가 없는 경우라도 비어있는 괄호를 꼭 붙여야 두개의 함수가 동시에 실행합니다.

<template>
  <h1>{{ count }}</h1>
  <button @click="add(), message()">+1</button>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    add() {
      this.count += 1
    },
    message() {
      console.log('1이 추가되었습니다.')
    }
  }
}
</script>

 

이렇게 Vue에서 event를 다루는 방법에 대해서 알아봤습니다.

해당 정보가 도움이 되셨다면, 공감과 구독 부탁 드립니다.

감사합니다. :)

댓글