$emit 父子組件間通信 和 單向數(shù)據(jù)流

單向數(shù)據(jù)流

  • Vue 提倡單向數(shù)據(jù)流,即父組件通過 props 傳遞數(shù)據(jù)到子組件,子數(shù)據(jù)無權(quán)修改父組件的數(shù)據(jù)。目的時為了防止應(yīng)用數(shù)據(jù)的流向邊得混亂,難以理解。
  • 只能通過 $emit 派發(fā)一個自定義事件給父組件,由父組件來修改數(shù)據(jù)

父子組件間通信

  • 父組件通過 :data="data" 傳遞數(shù)據(jù)
  • 父組件通過 @fun="fun" 傳遞方法
// 父組件 $emitFa.vue
<template>
  <div>
    <h1>父組件數(shù)據(jù):{{msg}}</h1>
    <emit-ch :sendData="msg" @updateInfo="updateInfo"></emit-ch>
  </div>
</template>
<script>
import emitCh from './$emitCh'
export default {
  components: { emitCh },
  data () {
    return {
      msg: '北京'
    }
  },
  methods: {
    updateInfo (data) {
       this.msg = data.city
    }
  }
}
</script>
  • 子組件通過 props 接收父組件傳遞的值
  • 子組件通過 $emit 調(diào)用父組件的方法并傳遞數(shù)據(jù)
// 子組件 $emitCh.vue
<template>
 <div>
    <h3>父組件傳給子組件的數(shù)據(jù):{{sendData}}</h3>
    <br/>
    <button @click='select()'>調(diào)用父組件的 updateInfo 方法</button>
  </div>

</template>

<script>
export default {
  props: ['sendData'],   // 接收父組件的數(shù)據(jù)
  data () {
    return {
    }
  },
  methods: {
    select () {
      let data = {
        city: '上海'
      }
      this.$emit('updateInfo', data)  // 觸發(fā)父組件的 updateInfo方法
    }
  }
}
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,186評論 0 29
  • 前言 您將在本文當(dāng)中了解到,往網(wǎng)頁中添加數(shù)據(jù),從傳統(tǒng)的dom操作過渡到數(shù)據(jù)層操作,實(shí)現(xiàn)同一個目標(biāo),兩種不同的方式....
    itclanCoder閱讀 26,255評論 1 12
  • 1、父組件可以使用 props 把數(shù)據(jù)傳給子組件。 2、子組件可以使用 $emit 觸發(fā)父組件的自定義事件。 vm...
    panw3i閱讀 1,539評論 0 0
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 簡單小巧、漸進(jìn)式、功能強(qiáng)大的技術(shù)棧 1.1.2 為什么學(xué)習(xí)...
    蔡華鵬閱讀 3,503評論 0 3
  • 序:感謝朋友們耐心讀完第一個故事。朋友說:情感故事無非就是初戀,相戀,三角戀!失戀,迷戀,婚外戀!人們其實(shí)都了解情...
    二昊不二閱讀 236評論 0 1

友情鏈接更多精彩內(nèi)容