본문 바로가기
FRONT/VUE

[vue3] 이벤트 버블링 이란?

by mangttu 2024. 4. 24.

● 버블링 이란?

TodoList.vue

더보기
<template>
    <div v-for="(item,index) in todos" :key="index"  class="card mt-2">
        <div
            class="card-body p-2 d-flex align-items-center"
            @click="moveToPage(item.id)"
        >
            <div class="form-check flex-grow-1">
                <input
                    class="form-check-input"
                    type="checkbox"  
                    :checked="item.completed"
                    @change="toggleTodo(index)"
                    :id="index"
                />
                <label
                    class="form-check-label"
                    :style="item.completed ? todoStyle :{}"
                    :class="{ 'todo': item.completed }"
                    :for="index"
                >
                    {{item.subject}}
                </label>
            </div>
            <div>
                <button
                class="btn btn-danger btn-sm"
                @click="deleteTodo(index)"
                >
                Delete
                </button>
            </div>
        </div>
    </div>
</template>

 

=> deleteTodo를 클릭시 이벤트가 동작 하지만 @click="moveToPage(item.id)"의 이벤트도 동작한다.

?

왜냐하면 이벤트 버블링 때문이다,

deleteTodo(index)의 이벤트가 부모(html까지)에 있는 이벤트까지 전파시키기 때문이다.

vue의 경우 => @click.stop = ""

js 의 경우 => evnet.stopPropagation()

을 사용하면 된다.

'FRONT > VUE' 카테고리의 다른 글

[vue3] 라이프사이클 생명주기  (0) 2024.04.24
[vue3] 자바스크립트 객체 복사/비교  (0) 2024.04.24
[vue3] router-view 사용법  (0) 2024.04.23
[vue3] computed, watchEffect, Watch 사용법  (0) 2024.04.23
[vue3] props, emit 사용법  (0) 2024.04.22