提交 88418d31 编写于 作者: fxy060608's avatar fxy060608

feat(mp): improve hook logic

上级 69116b84
......@@ -23,13 +23,35 @@ export function initMocks (vm, mocks) {
})
}
export function initHooks (mpOptions, hooks) {
function hasHook (hook, vueOptions) {
if (!vueOptions) {
return true
}
vueOptions = vueOptions.default || vueOptions
if (isFn(vueOptions)) {
vueOptions = vueOptions.extendOptions
}
if (isFn(vueOptions[hook])) {
return true
}
const mixins = vueOptions.mixins
if (Array.isArray(mixins)) {
return !!mixins.find(mixin => hasHook(hook, mixin))
}
}
export function initHooks (mpOptions, hooks, vueOptions) {
hooks.forEach(hook => {
mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args)
if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args)
}
}
})
}
}
export function initVueComponent (Vue, vueOptions) {
vueOptions = vueOptions.default || vueOptions
......
......@@ -22,7 +22,7 @@ export default function parseBasePage (vuePageOptions, {
initRelation
})
initHooks(pageOptions.methods, hooks)
initHooks(pageOptions.methods, hooks, vuePageOptions)
pageOptions.methods.onLoad = function (args) {
this.$vm.$mp.query = args // 兼容 mpvue
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册