鍍金池/ 問答/HTML/ 想讓vue子(孫)組件的動作一直觸發(fā)到祖父(或更多級)組件

想讓vue子(孫)組件的動作一直觸發(fā)到祖父(或更多級)組件

<component-祖父>
<component-父>
<component-孫> 在這里this.$emit()一個動作,想一直傳遞到祖父組件那里,必須要在父級那里做一次接力么?

父級組件中不需要對孫級的組件做任何的反應

回答
編輯回答
囍槑

不建議這樣去傳遞,這種情況用vuex會很簡單,傳兩級會導致代碼不容易維護,即使是最簡單的cms后臺,用了store后你會發(fā)現(xiàn)代碼維護性和可讀性大大加強,怕數(shù)據(jù)混亂可以建模塊來管理state,新手的確不容易理解,但是理解后你會發(fā)現(xiàn)很多問題變得很簡單。封裝組件除外,那個的確需要這么去做,業(yè)務層不建議,另外vue的render函數(shù)是個進階必學,用起來會很爽!

2017年1月28日 19:54
編輯回答
終相守

可以參考下 element-ui 源碼里面封裝的src/mixins/emitter.js里面封裝的mixins

指定觸發(fā)對象,組件名,通過while循環(huán),向上遍歷,找到組件后觸發(fā)。。

2018年9月18日 07:03
編輯回答
夏夕

最佳實踐,自己跑一下,不行那就是不行咯。換成vuex去跑就行了

2018年1月30日 18:19
編輯回答
過客

組件通信,月經(jīng)...
復雜場景使用vuex,具體看文檔.
簡單用用可以試試這個方案.
根組件實例之前
Vue.prototype.$pub = new Vue()
然后根組件下所有組件都可以通過
this.$pub.$emit('event', payload)的方式廣播消息.
同時,所有的組件都可以通過
this.$pub.$on('event', payload)的方式接收到這個消息,包括發(fā)消息的組件本身.

使用這種方式,可以實現(xiàn)一個全局的dialog組件.
筆記

2017年4月5日 00:17