MorJS aPage/wPage eventListener 語(yǔ)法糖

2024-01-15 17:38 更新

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

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

以下示例代碼以常見的刷新頁(yè)面數(shù)據(jù)為例,其中 refreshPage 是事件名

import { aPage } from '@morjs/core'

aPage({
  // 會(huì)自動(dòng)做事件的綁定和解綁
  $eventListener: {
    // refreshPage是監(jiān)聽的事件名
    refreshPage: function (storeId) {
      console.log('in page $eventListener refreshPage', storeId)
    }
  }
})

觸發(fā)代碼示例:

import { aPage } from '@morjs/core'

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)