組件通訊----基于Vue和PHP打造前后端分離的通用管理系統(tǒng)(八)

父子組件間的通訊,其實很簡單止喷,在前文好多地方都涉及到了,只是沒有專門提及混聊。
不過弹谁,組件通訊里邊有個坑,幫大家繞一繞句喜。

App組件和Aside(menu)組件,Aside組件通過App組件控制內(nèi)容區(qū)顯示预愤,最適合展示這個內(nèi)容。

先來看前面提過的一張圖:


組件交互.PNG

我們就其中的虛線一部分進行分析:

  • 父組件通過【props】與子組件通訊
  • 子組件通過【事件】向父組件傳遞信息

顯而易見的咳胃,父組件通過props可以控制子組件顯示的內(nèi)容植康,子組件通過發(fā)送事件,父組件響應(yīng)事件展懈,改變自身销睁。這么簡單供璧,當(dāng)然沒什么說的。關(guān)鍵是“坑”冻记。
在說坑前睡毒,先說這種父子通訊模式的的限制

  • 平行組件間的通訊受限制∪呃酰可以通過一條通訊總線演顾,把同級別間的組件掛在總線上通訊。
  • 爺孫組件通訊贞瞒,還得麻煩父組件偶房,倘若祖父和從孫呢,倘若...
    第一個問題军浆,有vuex,麻煩一點就是了挡闰。這種其實可以通過設(shè)計模式避免乒融。
    第二個問題,ElementUI給出一個辦法摄悯,可以參考'element-ui/src/mixins/emitter'這種廣播模式赞季。當(dāng)然這種廣播模式也能解決第一個問題。有點怪怪的就是了奢驯,不太符合代碼潔凈的原則申钩。我們后面會和這個東西打交道,這里先提一下瘪阁。
    下面通過代碼看《坑》:(這段代碼不能直接運行H銮病!管跺!了解意思得了)

當(dāng)父組件響應(yīng)事件時义黎,可能給自己添加新屬性,這時候會出現(xiàn)問題豁跑。

/* 子組件 **/
{
  template: '<div @click="onClick">{{value}}</div>',
  props: ['name', 'value'],
  // ...
  methods: {
    onClick() {
      this.$emit('add', this.name, Math.random());
    },
  },
}

/* 父組件 **/
{
  template: '<child name="name" :value="values['name']" @add="onAdd">';
  // 更一般的情況是廉涕,values來自props,同時爺組件甚至沒有給values傳遞值
 data {
    return {
      values: undifined;
    };
  },
  // ...
  methods: {
    onAdd(name, value) {
      // 悲劇再這里發(fā)生
      this.values[name] = value;
    },
  },
}

悲劇出現(xiàn)了艇拍,單擊后狐蜕,什么也沒發(fā)生...,不是應(yīng)該每次換一個隨機數(shù)嗎?父組件通過props控制不了子組件了卸夕?
問題躍然紙上了:

vue文檔有這么一句話:如果在實例創(chuàng)建之后添加新的屬性到實例上层释,它不會觸發(fā)視圖更新。

在我們的這套系統(tǒng)中娇哆,這個問題后面會碰到的湃累。添加新屬性的坑大家都能繞過勃救,但是祖孫三個組件混在一起,通訊混在一起治力,就不太起眼了蒙秒,成了陷阱。解決辦法是$set:this.$set(this.values, name, value);宵统。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晕讲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子马澈,更是在濱河造成了極大的恐慌瓢省,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痊班,死亡現(xiàn)場離奇詭異勤婚,居然都是意外死亡,警方通過查閱死者的電腦和手機涤伐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門馒胆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凝果,你說我怎么就攤上這事祝迂。” “怎么了器净?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵型雳,是天一觀的道長。 經(jīng)常有香客問我山害,道長纠俭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任粗恢,我火速辦了婚禮柑晒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眷射。我一直安慰自己匙赞,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布妖碉。 她就那樣靜靜地躺著涌庭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欧宜。 梳的紋絲不亂的頭發(fā)上坐榆,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音冗茸,去河邊找鬼席镀。 笑死匹中,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豪诲。 我是一名探鬼主播顶捷,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屎篱!你這毒婦竟也來了服赎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤交播,失蹤者是張志新(化名)和其女友劉穎重虑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秦士,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡缺厉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隧土。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芽死。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖次洼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情遇骑,我是刑警寧澤卖毁,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站落萎,受9級特大地震影響亥啦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜练链,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一翔脱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧媒鼓,春花似錦届吁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至潮模,卻和暖如春亮蛔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背擎厢。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工究流, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辣吃,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓芬探,卻偏偏與公主長得像神得,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子灯节,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,506評論 25 707
  • 本文章是我最近在公司的一場內(nèi)部分享的內(nèi)容循头。我有個習(xí)慣就是每次分享都會先將要分享的內(nèi)容寫成文章。所以這個文集也是用來...
    Awey閱讀 9,421評論 4 67
  • 此文基于官方文檔炎疆,里面部分例子有改動卡骂,加上了一些自己的理解 什么是組件? 組件(Component)是 Vue.j...
    陸志均閱讀 3,805評論 5 14
  • 序 今年大前端的概念一而再再而三的被提及形入,那么大前端時代究竟是什么呢全跨?大前端這個詞最早是因為在阿里內(nèi)部有很多前端開...
    一縷殤流化隱半邊冰霜閱讀 11,214評論 19 92
  • 2017.08.22 晚安「咖啡冥想」 咖啡冥想是星巴克四步驟中最重要的一步,為種子施肥灌溉亿遂,幫助種子不用等到多年...
    珍珠手鏈閱讀 181評論 0 0