歡迎您光臨本站 註冊首頁

從Node.js事件觸發器到Vue自定義事件的深入講解

←手機掃碼閱讀     qp18502452 @ 2020-06-27 , reply:0

Node.js中的事件觸發器所引發的思考

今天在看 Node.js 文檔的時候講到事件觸發器,其中的 emit 方法讓我想到了 Vue 中的自定義事件,藉此我對 Vue 又有了新的理解,所以將我的理解記錄下來,留作學習筆記。

Node.js中的事件觸發器

Node.js 為我們提供了一個事件模塊:EventEmitter,我們可以用它來處理事件

  const EventEmitter = require('events')  const eventEmitter = new EventEmitter()

 

eventEmitter 對象上有兩個方法:on 和 emit

  • on 用於添加自定義事件,註冊回調函數

  • emit 用於觸發事件,並將參數傳遞給回調函數

  eventEmitter.on('start', (e) => {   console.log(e)  })  eventEmitter.emit('start', 'started')

 

控制檯將會打印 started

Vue中的自定義事件

給組件添加自定義事件,下面示例代碼中的 enlarge-text 事件就是我們自己定義的事件,onEnlargeText 則是事件觸發時所要執行的回調函數,這裡的 onEnlargeText 是一個函數指針,指向 methods 中所定義的 onEnlargeText 函數。既然是回調函數,所以可能會有參數傳給它,那麼自定義事件的回調函數中的參數是誰傳遞給它的,具體含義又是什麼呢?

  methods: {   onEnlargeText: function (enlargeAmount) {    this.postFontSize += enlargeAmount   }  }

 

子組件事件處理中可以通過內建的 「$emit」 方法傳入父組件自定義事件名來觸發這個自定義事件,並且通過 「$emit」 的第二個參數將需要傳遞給父組件的數據拋出,這樣,自定義事件的回調函數中的參數來源也就明白了,就是 「$emit」 方法的第二個參數,這裡可以直接拋出一個更加靈活的對象。

  Enlarge text

 

到這裡我們可以看到,Vue 中的自定義事件和 Node.js 中的事件觸發器的理念非常相似,Vue 中自定義事件的註冊是在父組件中完成的,而觸發是在子組件中完成的。至此,就完成了對 Vue 自定義事件的解釋。

參考資源

nodejs.cn/learn/the-n…

cn.vuejs.org/v2/guide/co…

 

   


[qp18502452 ] 從Node.js事件觸發器到Vue自定義事件的深入講解已經有278次圍觀

http://coctec.com/docs/vue-js/show-post-239900.html