MorJS aComponent/wComponent $eventListener 語法糖

2024-01-15 17:38 更新

針對 eventPlugin 插件上用到的高頻用到的事件監(jiān)聽和取消監(jiān)聽,MorJS 拓展了語法,可以直接在 aComponent / wComponent 中直接使用。

  • $eventListener 會在 ComponentdidMount 生命周期中進(jìn)行事件的綁定,在 didUnmount 生命周期中進(jìn)行事件的解綁,業(yè)務(wù)可以不用再去關(guān)心事件的解綁邏輯
  • $eventListener 會在內(nèi)部處理好 this 對象,直接指向當(dāng)前的實(shí)例,不需要業(yè)務(wù)去關(guān)心綁定,業(yè)務(wù)請勿在事件的回調(diào)函數(shù)中使用箭頭函數(shù),否則會導(dǎo)致 this 對象異常
  • $eventListener 是一個(gè)對象: key 是事件名,value 是事件的回調(diào)函數(shù)
  • $eventListener 只針對需要多次監(jiān)聽的事件,對于只需要監(jiān)聽一次的,請參考 event 插件的 once 的用法

以下以修改了頁面的門店為例,其中 changeStore 是事件名

import { aComponent } from '@morjs/core'

aComponent({
  // 會自動做事件的綁定和解綁
  $eventListener: {
    // changeStore是監(jiān)聽的事件名
    changeStore: function (storeId) {
      console.log('in component $eventListener changeStore', storeId)
    }
  }
})

觸發(fā)代碼示例:

import { aComponent } from '@morjs/core'

aPage({
  data: {
    storeId: '123'
  },
  onStoreChange: function () {
    // 調(diào)用方依然只需要根據(jù)$event插件的方式,直接調(diào)用即可
    getApp().$event.emit('changeStore', this.data.storeId)
  }
})


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號