티스토리 뷰

dev/vue3

이벤트 발생 Emit

dev_0hoon 2025. 1. 4. 18:53
<div id="app">
    <app-contents v-on:이벤트이름="상위 컴포넌트의 메서드 이름"></app-contents>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>

var appContents = {
    template : `
        <p>
            <button v-on:click="sendEvent">갱신</button>
        </p>
    `,
    methods: {
        sendEvent() {
            this.$emit('refresh');
        }
    }
}

Vue.createApp({
    components : {
        'app-contents' : appContents
    }
}).mount('#app');
</script>

 

하위 컴포넌트의 이벤트를 발생시켜 상위컴포넌트로 이동시키는 것이 emit이다.

 

하위에서 쪽지를 주며 '뭐좀 실행시켜줘' 하는 것으로 받아들이면 편하다.

 

<div id="app">
    <app-contents v-on:refresh="showAlert"></app-contents>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>

var appContents = {
    template : `
        <p>
            <button v-on:click="sendEvent">갱신</button>
        </p>
    `,
    methods: {
        sendEvent() {
            this.$emit('refresh');
        }
    }
}
//루트 컴포넌트
Vue.createApp({
    methods: {
        showAlert() {
            alert('새로고침');
        }
    },
    components : {
        'app-contents' : appContents
    }
}).mount('#app');
</script>

 

이와 같이 아래의 emit을

v-on:emit이름="상위의 함수"를 사용하면 하위 컴포넌트에서 상위컴포넌트의 이벤트를

실행하도록 할 수 있다.

 

 

'dev > vue3' 카테고리의 다른 글

Vue CLI: 뷰 프로젝트 생성 도구 및 구조 약간 설명  (1) 2025.01.04
same level low component끼리의 데이터 이동  (0) 2025.01.04
props 속성  (0) 2025.01.04
vue 초반 시작  (0) 2025.01.04
Vue.js 란? Vue2와 Vue3의 차이점  (0) 2025.01.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함