vue中父子組件的通信

父子組件通信在vue項目中常常用到喜德,但一段時間不用總會忘記,這次記下來墙歪。

一听系、父組件傳給子組件

方法一:

1. 簡單,使用props傳遞數(shù)據(jù)虹菲,父組件調(diào)用子組件并傳遞數(shù)據(jù)靠胜,數(shù)據(jù)包括屬性和方法(String,Number,Boolean,Object, Array ,Function),子組件內(nèi)用props接收毕源。

  1. 例:父組件:
<child :message="hello"></child>      //這里的message就是通信對應(yīng)的“接口”,hello是父組件內(nèi)的data或function

對應(yīng)子組件內(nèi):

<script> props:[ 'message' ] </script>

    在子組件內(nèi)用起來和data一樣浪漠。

3. 注意:props是單向數(shù)據(jù)流,父組件屬性變化時霎褐,會傳遞給子組件址愿,反過來不會。這是為了防止子組件修改了父組件的狀態(tài)后冻璃,數(shù)據(jù)流變得難以理解响谓。若強行在子組件內(nèi)改變props损合,vue會在控制臺給出警告。

如果需要將其值作為局部數(shù)據(jù)來用或者處理成其他數(shù)據(jù)輸出娘纷,那么可以在data中定義變量嫁审,用props初始化來使用;若需要處理赖晶,可以在computed屬性中計算返回使用律适。

方法二:

1. 通過$on傳遞父組件方法,直觀的表現(xiàn)了子組件主動調(diào)用父組件的數(shù)據(jù)遏插。

  1. 例:
父組件:

<template>

<div>

    <h3>父組件</h3>

      <child @childEvent = "parentMethod"></child>  //childEvent作為‘接口’擦耀,調(diào)用父組件的方法parentMethod

    </div>

</template>

<script>

import child from '@/../child';

  export default{

  components:{child},

data(){

      return{

parentMsg:"來自父組件的消息",

      }

        },

method{

parentMethod(){

alert(this.parentMsg)

}

}

    }

</script>

子組件:

<template>

<div>

    <h3>我是子組件</h3>

    </div>

</template>

<script>

  export default{

mounted(){

this.$emit('childEvent')  //子組件通過emit調(diào)用父組件方法,childEvent作為‘接口’連接

}

    }

</script>

二涩堤、子組件傳給父組件

方法一:$emit觸發(fā)

1. 通過$emit觸發(fā)眷蜓,子組件主動觸發(fā)父組件事件,同時傳遞數(shù)據(jù)胎围。子傳父不能像父傳子那樣直接傳遞直接接收吁系,需要通過觸發(fā)事件通知父組件才能傳遞。

  1. 例:

子組件: //子組件名:relationAnalyzeDialog

<template>

<button @click = "dialogFormEvent">取消</button>    //觸發(fā)通知父組件的方法(有點繞白魂,理解了就好懂)

</template>

<script>

export default{

data(){

return{

dialogFormVisible:false,

}

},

methods:{

    dialogFormEvent(){

    this.dialogFormVisible = false;

      this.$emit('change', this.dialogFormVisible)  //觸發(fā)change汽纤,change是子父組件通信的對應(yīng)的“接口”, this.dialogFormVisible 為向父組件傳遞的數(shù)據(jù)

    }

  }

}

</script>

父組件:

<template>

<relationAnalyzeDialog  @change = "dialogForm"  :msg = "msg"></relationAnalyzeDialog>  //監(jiān)聽子組件觸發(fā)的change福荸,調(diào)用本身的dialogForm方法蕴坪,并

</template>

<script>

components:{

    relationAnalyzeDialog

  },

  data(){

  return {

dialogFormVisible

}

  },

  methods:{

  dialogForm(msg){

this.dialogFormVisible = msg;

}

  }



</script>

方法二:refs獲取

  1. 給子組件添加refs屬性敬锐,父組件在使用時通過this.$refs.childName....來獲取子組件的數(shù)據(jù)背传。

  2. 相當(dāng)于父組件主動調(diào)用子組件的數(shù)據(jù)。

PS總結(jié):父組件應(yīng)處于高位台夺,擁有控制權(quán)径玖,對外交互的權(quán)利應(yīng)該交由父組件,所以常用的是 props和 $emit颤介。

下回有心得再補充梳星。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滚朵,隨后出現(xiàn)的幾起案子冤灾,更是在濱河造成了極大的恐慌,老刑警劉巖辕近,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件韵吨,死亡現(xiàn)場離奇詭異,居然都是意外死亡亏推,警方通過查閱死者的電腦和手機学赛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門年堆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盏浇,你說我怎么就攤上這事变丧。” “怎么了绢掰?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵痒蓬,是天一觀的道長。 經(jīng)常有香客問我滴劲,道長攻晒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任班挖,我火速辦了婚禮鲁捏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萧芙。我一直安慰自己给梅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布双揪。 她就那樣靜靜地躺著动羽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渔期。 梳的紋絲不亂的頭發(fā)上运吓,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音疯趟,去河邊找鬼拘哨。 笑死,一個胖子當(dāng)著我的面吹牛迅办,可吹牛的內(nèi)容都是我干的宅静。 我是一名探鬼主播章蚣,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼站欺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纤垂?” 一聲冷哼從身側(cè)響起矾策,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎峭沦,沒想到半個月后贾虽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡吼鱼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年蓬豁,在試婚紗的時候發(fā)現(xiàn)自己被綠了绰咽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡地粪,死狀恐怖取募,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蟆技,我是刑警寧澤玩敏,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站质礼,受9級特大地震影響旺聚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜眶蕉,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一砰粹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧造挽,春花似錦伸眶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至圣拄,卻和暖如春嘴秸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庇谆。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工岳掐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饭耳。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓串述,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寞肖。 傳聞我的和親對象是個殘疾皇子纲酗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 您將在本文當(dāng)中了解到,往網(wǎng)頁中添加數(shù)據(jù),從傳統(tǒng)的dom操作過渡到數(shù)據(jù)層操作,實現(xiàn)同一個目標(biāo),兩種不同的方式....
    itclanCoder閱讀 25,803評論 1 12
  • 組件(Component)是Vue.js最核心的功能,也是整個架構(gòu)設(shè)計最精彩的地方新蟆,當(dāng)然也是最難掌握的觅赊。...
    六個周閱讀 5,614評論 0 32
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容琼稻。關(guān)于...
    云之外閱讀 5,050評論 0 29
  • 此文基于官方文檔吮螺,里面部分例子有改動,加上了一些自己的理解 什么是組件? 組件(Component)是 Vue.j...
    陸志均閱讀 3,827評論 5 14
  • 很失落鸠补。
    由木貓閱讀 151評論 0 0