๐Ÿ“• Language/Vue

[Age of Vue] Vue.js ์‹œ์ž‘ํ•˜๊ธฐ - 32. ์‹ฑ๊ธ€ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฐ์šด ๋‚ด์šฉ ์ ์šฉํ•ด๋ณด๊ธฐ (3)

a n u e 2022. 5. 9. 22:33

์‹ฑ๊ธ€ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ์—์„œ event emit์„ ๊ตฌํ˜„ํ•ด๋ณด์ž


AppHeader.vue

<!-- ์ปดํฌ๋„ŒํŠธ๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ตœ์†Œ ๋‘ ๋‹จ์–ด๋กœ ์กฐํ•ฉ (html ๊ธฐ๋ณธ ํƒœ๊ทธ์™€ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ)-->
<template>
  <header>
      <h1>Header</h1>
      <!-- App.vue์—์„œ props ๋ฐ์ดํ„ฐ๋กœ ๋„˜์–ด์˜จ ๊ฐ’์ด ์ž๋™์œผ๋กœ ๋“ค์–ด์˜ด-->
      <h1>{{ propsdata }}</h1>
      <button v-on:click="sendEvent">send</button>
  </header>
</template>

<script>
export default {
    //์ธ์Šคํ„ด์Šค ์˜ต์…˜
    //1.propsdata๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฐฐ์—ด์— ์ƒ์œ„์ปดํฌ๋„ŒํŠธ์—์„œ ๋‚ด๋ ค์˜จ props data๋‹ด๋Š”๋‹ค.
    props : ['propsdata']
    , methods : {
        sendEvent : function () {
          //์œ„์ชฝ ์ปดํฌ๋„ŒํŠธ ์ฆ‰, App.vue๋กœ renew๋ผ๋Š” ์ด๋ฆ„์˜ ์ด๋ฒคํŠธ๊ฐ€ ์ „๋‹ฌ
          //๊ทธ๋Ÿผ App.vue์—์„œ๋Š” ํƒœ๊ทธ์— v-on์œผ๋กœ renew๋ผ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ 
          //๊ทธ ์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” function์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
          this.$emit('renew');
      }
    }
}
</script>

<style>

</style>

 

 

App.vue

<template>
  <!-- template์—๋Š” html element๊ฐ€ ์ตœ์ƒ์œ„ 1๊ฐœ๋งŒ ์žˆ์–ด์•ผํ•œ๋‹ค -->
  <div>
    {{ str }}
    <!--
            //AppHeader.vue์—์„œ ์ •์˜ํ•œ ์ด๋ฆ„="App.vue(์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ)์˜ ๋ฐ์ดํ„ฐ ์ด๋ฆ„"
      <app-header v-bind:ํ”„๋กญ์Šค ์†์„ฑ ์ด๋ฆ„="์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐ์ดํ„ฐ ์ด๋ฆ„"></app-header>
      str์ด๋ผ๋Š” data๊ฐ€ ์™ผ์กฑ์˜ ํ”„๋กญ์Šค๋กœ ๋‹ด๊ฒจ ๋‚ด๋ ค๊ฐ
    -->
              <!-- 2. AppHeader.vue์—์„œ ์ •์˜ํ•œ ์ด๋ฆ„์ธ propsdata๋ฅผ ๋„ฃ์–ด์คŒ -->
    <app-header 
    v-bind:propsdata="str"
    v-on:renew="renewStr">
    </app-header>
  </div>
</template>

<script>
import AppHeader from './components/AppHeader.vue'

export default {
  data : function() {
    return {
      str : 'Header'
    }
  },
  components : {
    //๋‚ด๊ฐ€ ์ •์˜ํ•œ ์ปดํฌ๋„ŒํŠธ ๋ณ€์ˆ˜ : ๋‚ด๊ฐ€ ์ •์˜ํ•œ import ๋ณ€์ˆ˜
    'app-header' : AppHeader
  },
  methods : {
    renewStr : function() {
      //Header->hi
      //propsdata์ธ Header๊ฐ€ renew ์ด๋ฒคํŠธ์— ์˜ํ•ด hi๋กœ ๋ฐ”๋€œ
      this.str = 'hi'; 
    }
  }
}
</script>

<style>
</style>