Skip to content

Commit

Permalink
feat(mp): add initUnknownHooks
Browse files Browse the repository at this point in the history
  • Loading branch information
zhenyuWang committed Aug 16, 2022
1 parent c2696d7 commit f628054
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 1 deletion.
29 changes: 29 additions & 0 deletions src/core/runtime/wrapper/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,35 @@ export function initHooks (mpOptions, hooks, vueOptions) {
})
}

export function initUnknownHooks (mpOptions, vueOptions, excludes = []) {
findHooks(vueOptions).forEach((hook) => initHook(mpOptions, hook, excludes))
}

function findHooks (vueOptions, hooks = []) {
if (vueOptions) {
Object.keys(vueOptions).forEach((name) => {
if (name.indexOf('on') === 0 && isFn(vueOptions[name])) {
hooks.push(name)
}
})
}
return hooks
}

function initHook (mpOptions, hook, excludes) {
if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {
mpOptions[hook] = function (args) {
if (
(__PLATFORM__ === 'mp-toutiao' || __PLATFORM__ === 'mp-lark') &&
hook === 'onError'
) {
return getApp().$vm.$callHook(hook, args)
}
return this.$vm && this.$vm.__call_hook(hook, args)
}
}
}

export function initVueComponent (Vue, vueOptions) {
vueOptions = vueOptions.default || vueOptions
let VueComponent
Expand Down
2 changes: 2 additions & 0 deletions src/platforms/mp-alipay/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
import {
initData,
initHooks,
initUnknownHooks,
handleEvent,
initBehaviors,
initVueComponent,
Expand Down Expand Up @@ -93,6 +94,7 @@ export default function parsePage (vuePageOptions) {
}

initHooks(pageOptions, hooks, vuePageOptions)
initUnknownHooks(pageOptions, vuePageOptions)

if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(callMethod => {
Expand Down
2 changes: 2 additions & 0 deletions src/platforms/mp-weixin/runtime/wrapper/app-base-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Vue from 'vue'

import {
initHooks,
initUnknownHooks,
initMocks
} from 'uni-wrapper/util'

Expand Down Expand Up @@ -190,6 +191,7 @@ export default function parseBaseApp (vm, {
initAppLocale(Vue, vm, normalizeLocale(__GLOBAL__.getSystemInfoSync().language) || LOCALE_EN)

initHooks(appOptions, hooks)
initUnknownHooks(appOptions, vm.$options)

return appOptions
}
4 changes: 3 additions & 1 deletion src/platforms/mp-weixin/runtime/wrapper/page-base-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {

import {
initHooks,
initUnknownHooks,
PAGE_EVENT_HOOKS
} from 'uni-wrapper/util'

Expand All @@ -27,6 +28,7 @@ export default function parseBasePage (vuePageOptions, {
})

initHooks(pageOptions.methods, hooks, vuePageOptions)
initUnknownHooks(pageOptions.methods, vuePageOptions)

pageOptions.methods.onLoad = function (query) {
this.options = query
Expand All @@ -40,4 +42,4 @@ export default function parseBasePage (vuePageOptions, {
}

return pageOptions
}
}
2 changes: 2 additions & 0 deletions src/platforms/mp-xhs/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
import {
initData,
initHooks,
initUnknownHooks,
handleEvent,
initBehaviors,
initVueComponent,
Expand Down Expand Up @@ -80,6 +81,7 @@ export default function parsePage (vuePageOptions) {
}

initHooks(pageOptions, hooks, vuePageOptions)
initUnknownHooks(pageOptions, vuePageOptions)

if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(callMethod => {
Expand Down

0 comments on commit f628054

Please sign in to comment.