Vue 父子組件之間的數據通信--props,$emit

首先是父組件內里的數據通報到子組件
這裏用props,props有支持物的意義,能夠理解為橋樑。props要寫在自組件內里。

先定義一個子組件,在組件中註冊props

<template>
    <div>
        <div>{{message}}(子組件)</div>
    </div>
</template>
<script>
export default {
    props: {
        message: String  //定義傳值的範例<br>    }
}
</script>
<style>
</style>


在父組件中,引入子組件,並傳入子組件內須要的值

<template>
    <div>
        <div>父組件</div>
        <child :message="parentMsg"></child>  
    </div>
</template>
 
<script>
 
import child from './child'  //引入child組件
export default {
    data() {
            return {
                parentMsg: 'a message from parent'  //在data中定義須要傳入的值
            }
        },
        components: {
            child
        }
}
</script>
<style>
</style>

注:這類體式格局只能由父向子通報,子組件不能更新父組件內的data

接下來是子組件的數據通報到父組件
這裏用到了$emit ,emit有發射發出的意義,這就不難理解了

tips: App.vue 父組件 / Hello.vue 子組件

父組件內里的內容
<!–App.vue :–>

<template>
  <div id="app">
    <hello @newNodeEvent="parentLisen" />
  </div>
</template>
<script>
 import hello from './components/Hello'
 export default {
  name: 'app',
  'components': {
   hello
  },
  methods: {
   parentLisen(evtValue) { 
    //evtValue 是子組件傳過來的值
    alert(evtValue)
   }
  }
 }
</script>

子組件內里的內容
<!–Hello.vue :–>

<template>
  <div class="hello">
    <input type="button" name="" id="" @click="chilCall()" value="子調父" /> 
  </div>
</template>
<script>
 export default {
  name: 'hello',
  'methods': {
   chilCall(pars) {
    this.$emit('newNodeEvent', '我是子元素傳過來的')
   }
  }
 }
</script> 

$emit經由過程挪用父的要領的體式格局完成了子向父的數據通報

    原文作者:Robert
    原文地址: https://segmentfault.com/a/1190000015234117
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞