[Vue] emit

κΆŒμš©μ€€Β·2023λ…„ 12μ›” 19일
post-thumbnail

emit

πŸ“Œ μ •μ˜

Vue.jsμ—μ„œ emit은 ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μƒμœ„ μ»΄ν¬λ„ŒνŠΈλ‘œ 이벀트λ₯Ό μ „λ‹¬ν•˜λŠ” 데 μ‚¬μš©λœλ‹€. 이것은 λΆ€λͺ¨-μžμ‹ κ°„ ν†΅μ‹ μ˜ μΌλΆ€λ‘œμ„œ, μžμ‹ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μΌμ–΄λ‚˜λŠ” 이벀트λ₯Ό λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈμ—μ„œ κ°μ§€ν•˜κ³  μ²˜λ¦¬ν•  수 있게 ν•΄μ€€λ‹€.

✍ μ˜ˆμ‹œ μ½”λ“œ

ChildComponent.vue (μžμ‹ μ»΄ν¬λ„ŒνŠΈ)

<template>
  <button @click="notifyParent">Click me!</button>
</template>

<script>
export default {
  methods: {
    notifyParent() {
      // 이벀트λ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€. 첫 번째 λ§€κ°œλ³€μˆ˜λŠ” 이벀트 이름이며,
      // 두 번째 λ§€κ°œλ³€μˆ˜λŠ” 전달할 λ°μ΄ν„°μž…λ‹ˆλ‹€.
      this.$emit('child-event', 'Hello from child!');
    }
  }
};
</script>

ParentComponent.vue (λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈ)

<template>
  <div>
    <p>{{ messageFromChild }}</p>
    <!-- μžμ‹ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•˜κ³ , μžμ‹ μ»΄ν¬λ„ŒνŠΈμ—μ„œ λ°œμƒν•˜λŠ” 이벀트λ₯Ό κ°μ§€ν•©λ‹ˆλ‹€. -->
    <child-component @child-event="handleChildEvent"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      messageFromChild: ''
    };
  },
  methods: {
    handleChildEvent(message) {
      // μžμ‹ μ»΄ν¬λ„ŒνŠΈλ‘œλΆ€ν„° μ „λ‹¬λœ 이벀트λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      this.messageFromChild = message;
    }
  }
};
</script>
profile
Brendan Eich, Jordan Walke, Evan You, κΆŒμš©μ€€

0개의 λŒ“κΈ€