国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

淺談Vue2.0父子組件間事件派發(fā)機(jī)制

2019-11-19 14:33:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

從vue1.x過(guò)來(lái)的都知道,在vue2.0中,父子組件間事件通信的$dispatch和$broadcase被移除了。官方考慮是基于組件樹結(jié)構(gòu)的事件流方式實(shí)在是讓人難以理解,并且在組件結(jié)構(gòu)擴(kuò)展的過(guò)程中會(huì)變得越來(lái)越脆落。特別是在組件層級(jí)比較深的情況下。通過(guò)廣播和事件分發(fā)的機(jī)制,就顯得比較混亂了。

官方在廢除的同時(shí),也為我們提供了替換方案,包括實(shí)例化一個(gè)空的vue實(shí)例,使用$emit反應(yīng)子組件上的狀態(tài)變化

1.使用$emit觸發(fā)事件

helloWorld.vue作為父組件,dialogConfigVisible變量控制子組件彈框顯示或隱藏。

configBox.vue作為子組件,假設(shè)為封裝的公告彈窗。

在父組件中 helloWorld.vue 中

< template/>

  <config-box   :visible="dialogConfigVisible"           @listenToConfig="changeConfigVisible" > </config-box>

script

 data(){  return {   dialogConfigVisible:true  } }  methods: {   changeConfigVisible(flag) {     this.dialogConfigVisible = flag;   }  }

然后,在子組件 configBox.vue 中,主要在任意事件回調(diào)中,使用 $emit來(lái)觸發(fā)自定義的 listenToConfig事件,后面還可以加上參數(shù)傳給父組件。比如,在子組件彈窗上點(diǎn)擊×關(guān)閉時(shí),通知父組件 helloWorld.vue我要關(guān)閉了,主要方便父組件改變相應(yīng)狀態(tài)變量,并傳入false到自定義的事件中。

script

methods:{ dialogClose() {  this.show = false;  this.$emit("listenToConfig", false) }}

在子

主站蜘蛛池模板: 石河子市| 三亚市| 万源市| 元江| 岱山县| 宁河县| 额济纳旗| 深水埗区| 博兴县| 江安县| 金川县| 凌源市| 龙泉市| 通渭县| 睢宁县| 德州市| 普格县| 万盛区| 绍兴县| 青铜峡市| 徐州市| 鄂托克前旗| 顺昌县| 谷城县| 尚义县| 和平县| 乌拉特后旗| 安多县| 青州市| 渑池县| 紫阳县| 彩票| 南安市| 阳江市| 涟水县| 二连浩特市| 红原县| 西吉县| 分宜县| 安乡县| 枝江市|