【譯】Vue 的小奇技(第十篇):監聽第三方元件的生命週期鉤子

程式猿何大叔發表於2019-03-19

特別宣告:本文是作者 Alex Jover 釋出在 VueDose 上的一個系列。

版權歸作者所有。

譯者在翻譯前已經和作者溝通得到了翻譯整個系列的授權。

為了不影響大家閱讀,獲得授權的記錄會放在本文的最後。

正文

今天要講的技巧是我以前從我朋友 Damian Dulisz 那裡學來的。他是 Vue.js 核心團隊的成員,就是那個官方新聞站點 Vue newsletter 的建設者,也還是 vue-multiselect 庫的作者。

在一些場景中,我需要在父元件上知道子元件什麼時候被建立、掛載或者是更新,特別是當為原生 js 庫建立元件時。

你可能知道有一些方法可以在你自己的元件上,實現以上的需求。舉個例子,通過在子元件的生命週期的鉤子函式中,觸發事件,就像這樣:

mounted() {
  this.$emit("mounted");
}
複製程式碼

然後你就可以在父元件上這樣做:<Child @mounted="doSomething"/>

我告訴你,沒有必要這樣實現;更何況實際上,你在面對第三方元件時,也辦法這樣實現。

取而代之的方法是,通過使用 @hook: 字首監聽生命週期中的鉤子,並指定回撥函式。

舉個例子,如果你想要在第三方元件 v-runtime-template 渲染時做一些事情,那麼你可以監聽它的生命週期中的 updated 鉤子:

<v-runtime-template @hook:updated="doSomething" :template="template" />
複製程式碼

不相信我嗎?自己去 CodeSandbox 看看這個 例子 吧!

你可以線上閱讀這篇 原文,裡面有可供複製貼上的原始碼。如果你喜歡這個系列的話,請分享給你的同事們!

結語

此係列的其他文章,會同步系列官網的釋出情況,及時地翻譯釋出到掘金。請持續關注「程式猿何大叔」,相信我會給大家帶來更多優質的內容,不要忘了點贊~

如果想要了解譯者的更多,請查閱如下:

請求翻譯授權記錄

請求翻譯授權記錄

微信公眾號
覺得本文不錯的話,分享一下給小夥伴吧~

相關文章