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이름="상위의 함수"를 사용하면 하위 컴포넌트에서 상위컴포넌트의 이벤트를

실행하도록 할 수 있다.