Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- reactnative
- supabase authentication
- 이진탐색
- meatadata
- generic
- code-push-standalone
- supabase 페이지네이션
- 페이지네이션
- array
- xlsx-js-style
- 코드푸시
- app.post
- async
- 글또10기x코드트리
- javascript
- react
- Spring
- extends
- Filter
- 슬라이딩윈도우
- 스크롤이벤트
- map
- TS
- Next.js
- supabase auth
- codepush
- set
- interface
- 타입스크립트
- 상속
Archives
- Today
- Total
rhanziy
Vue - 이벤트 핸들러 v-on, @click 본문
vue에서 이벤트 처리는
v-on:이벤트명 = " 이벤트 발생 시 실행할 코드 " or
@이벤트명 = " 이벤트 발생 시 실행할 코드" 으로 사용한다.
예를들어 이벤트 핸들러 onclick은 v-on:click = " " 축약형으로는 @click = " " 이 되는 것.
1. 이벤트 발생 시 실행할 함수는 script태그 export default { method { } } 에 때려넣는다.
2. vue에서는 데이터가 변하면 html에 바로 반영되니까 @click = " 변수++ " 이렇게 쓰면 댐.
3. 여러가지 이벤트들은 ctrl+space로 확인하자. @mouseover, @drag, @input 등등 많음.
<template>
<div>
<div class="menu">
<a v-for="(a,i) in menu" :key="i"> {{ a }} </a>
</div>
<div v-for="(a, i) in products" :key="i">
<h4 :style="color">{{ a }}</h4>
<p>50만원</p>
<button @click="increase">허위매물신고</button><span>신고 수 : {{ click }}</span>
</div>
</div>
</template>
<script>
export default {
name: 'App',
data(){
return {
color : 'color : blue',
menu : ['Home', 'Shop', 'About'],
products : ['역삼동 원룸', '천호동 원룸', '마포구 원룸'],
click : 0,
}
},
methods : {
increase(){
this.click++
},
},
components: {
}
}
</script>
<button @click="click++">허위매물신고</button><span>신고 수 : {{ click }}</span>
<button @click="increase">허위매물신고</button><span>신고 수 : {{ click }}</span>
위 코드만 봤을 땐, 두줄 다 같은 결과를 발생시킨다.
여기서 문제점은 모든 매물의 클릭이벤트 발생시 click값이 동일하게 증가한다는건데,
간단하게 몇줄 수정하면 된다.
1. 일단 데이터보관함의 click값을 products 데이터 갯수만큼 배열로 수정
data(){
return {
color : 'color : blue',
menu : ['Home', 'Shop', 'About'],
products : ['역삼동 원룸', '천호동 원룸', '마포구 원룸'],
click : [0,0,0],
}
},
2. click이벤트 발생시 실행되는 increase함수의 파라미터에 v-for의 i를 활용한 값을 넣고 click데이터도 변경~
<div v-for="(a, i) in products" :key="i">
<h4 :style="color">{{ a }}</h4>
<p>50만원</p>
<button @click="increase(i)">허위매물신고</button><span>신고 수 : {{ click[i] }}</span>
</div>
3. increase함수에 파라미터 추가
methods : {
increase(i){
this.click[i]++
},
},
화면결과 🔽

전체코드 🔽
더보기
<template>
<div>
<div class="menu">
<a v-for="(a,i) in menu" :key="i"> {{ a }} </a>
</div>
<div v-for="(a, i) in products" :key="i">
<h4 :style="color">{{ a }}</h4>
<p>50만원</p>
<button @click="increase(i)">허위매물신고</button><span>신고 수 : {{ click[i] }}</span>
</div>
</div>
</template>
<script>
export default {
name: 'App',
data(){
return {
color : 'color : blue',
menu : ['Home', 'Shop', 'About'],
products : ['역삼동 원룸', '천호동 원룸', '마포구 원룸'],
click : [0,0,0],
}
},
methods : {
increase(i){
this.click[i]++
},
},
components: {
}
}
</script>
<style>
//생략
</style>
'study' 카테고리의 다른 글
Vue - component 만들기, 데이터 props전달 (0) | 2023.06.18 |
---|---|
Vue - v-if와 모달창 만들기 (0) | 2023.06.18 |
Vue - 데이터 바인딩과 v-for 반복문 (1) | 2023.06.11 |
마크다운 문법 참고 (0) | 2023.03.15 |
Vue 3버전 설치, 개발환경 셋팅 (0) | 2023.02.01 |