diff --git a/packages/uni-app-plus/dist/index.js b/packages/uni-app-plus/dist/index.js index e93bc8cab8933553e2f5ebceed443dab017fe353..0895c651190c11e9eef0af7ff19124c191256a39 100644 --- a/packages/uni-app-plus/dist/index.js +++ b/packages/uni-app-plus/dist/index.js @@ -433,13 +433,35 @@ function initMocks (vm, mocks) { }); } -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)) + } +} + +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) + }; + } }); -} +} function initVueComponent (Vue$$1, vueOptions) { vueOptions = vueOptions.default || vueOptions; @@ -1115,7 +1137,7 @@ function parseBasePage (vuePageOptions, { initRelation }); - initHooks(pageOptions.methods, hooks$2); + initHooks(pageOptions.methods, hooks$2, vuePageOptions); pageOptions.methods.onLoad = function (args) { this.$vm.$mp.query = args; // 兼容 mpvue diff --git a/packages/uni-app-plus/package.json b/packages/uni-app-plus/package.json index d3c2bd801643e9c2a44537807af2a28f3987f9c8..d7ad897db8949c2fde329c498e579ad34527274d 100644 --- a/packages/uni-app-plus/package.json +++ b/packages/uni-app-plus/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-app-plus", - "version": "0.0.241", + "version": "0.0.242", "description": "uni-app app-plus", "main": "dist/index.js", "scripts": { diff --git a/packages/uni-mp-alipay/dist/index.js b/packages/uni-mp-alipay/dist/index.js index 31a5183b94d03570daf81a382ba9437ec6446f3c..71b985dbfc0ed783705996373bdbb116a62264dd 100644 --- a/packages/uni-mp-alipay/dist/index.js +++ b/packages/uni-mp-alipay/dist/index.js @@ -752,13 +752,35 @@ function initMocks (vm, mocks) { }); } -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)) + } +} + +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) + }; + } }); -} +} function initVueComponent (Vue$$1, vueOptions) { vueOptions = vueOptions.default || vueOptions; diff --git a/packages/uni-mp-alipay/package.json b/packages/uni-mp-alipay/package.json index 13d5257021db59ae8a93569695504f95253a3e68..9600d111e043d72cd82c01dff2199eb74209bef2 100644 --- a/packages/uni-mp-alipay/package.json +++ b/packages/uni-mp-alipay/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-mp-alipay", - "version": "0.0.814", + "version": "0.0.815", "description": "uni-app mp-alipay", "main": "dist/index.js", "scripts": { diff --git a/packages/uni-mp-baidu/dist/index.js b/packages/uni-mp-baidu/dist/index.js index 3118ce5eaebc82645f11d413b7a4890c687369ff..a630f4de36f1e21fff2ccb30e1059db3a55f5651 100644 --- a/packages/uni-mp-baidu/dist/index.js +++ b/packages/uni-mp-baidu/dist/index.js @@ -533,13 +533,35 @@ function initMocks (vm, mocks) { }); } -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)) + } +} + +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) + }; + } }); -} +} function initVueComponent (Vue$$1, vueOptions) { vueOptions = vueOptions.default || vueOptions; @@ -1245,7 +1267,7 @@ function parseBasePage (vuePageOptions, { initRelation }); - initHooks(pageOptions.methods, hooks$1); + initHooks(pageOptions.methods, hooks$1, vuePageOptions); pageOptions.methods.onLoad = function (args) { this.$vm.$mp.query = args; // 兼容 mpvue diff --git a/packages/uni-mp-baidu/package.json b/packages/uni-mp-baidu/package.json index cb5569e63d330a46a897a0289009ae9f9ece207a..d192dbfba214ec4f34e9f2057f20b180f616ac15 100644 --- a/packages/uni-mp-baidu/package.json +++ b/packages/uni-mp-baidu/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-mp-baidu", - "version": "0.0.841", + "version": "0.0.842", "description": "uni-app mp-baidu", "main": "dist/index.js", "scripts": { diff --git a/packages/uni-mp-toutiao/dist/index.js b/packages/uni-mp-toutiao/dist/index.js index 48c4b96fa6dc0c392003f21fbca509762044fcf5..cdc7696c1b1bd230d5eabf4f19c13bcc21107ead 100644 --- a/packages/uni-mp-toutiao/dist/index.js +++ b/packages/uni-mp-toutiao/dist/index.js @@ -578,13 +578,35 @@ function initMocks (vm, mocks) { }); } -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)) + } +} + +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) + }; + } }); -} +} function initVueComponent (Vue$$1, vueOptions) { vueOptions = vueOptions.default || vueOptions; @@ -1327,7 +1349,7 @@ function parseBasePage (vuePageOptions, { initRelation }); - initHooks(pageOptions.methods, hooks$1); + initHooks(pageOptions.methods, hooks$1, vuePageOptions); pageOptions.methods.onLoad = function (args) { this.$vm.$mp.query = args; // 兼容 mpvue diff --git a/packages/uni-mp-toutiao/package.json b/packages/uni-mp-toutiao/package.json index 33c981a4014e026505a5951ba21d83262d283bdf..1c2bbef675980cdc03f3189dde7a69d4cd988fd7 100644 --- a/packages/uni-mp-toutiao/package.json +++ b/packages/uni-mp-toutiao/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-mp-toutiao", - "version": "0.0.338", + "version": "0.0.339", "description": "uni-app mp-toutiao", "main": "dist/index.js", "scripts": { diff --git a/packages/uni-mp-weixin/dist/index.js b/packages/uni-mp-weixin/dist/index.js index dd939230f6cb380567cb4e13d96f16bbdb3cab3c..1d5da1d3240357d07056675c2ca59dfabb644a83 100644 --- a/packages/uni-mp-weixin/dist/index.js +++ b/packages/uni-mp-weixin/dist/index.js @@ -435,13 +435,35 @@ function initMocks (vm, mocks) { }); } -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)) + } +} + +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) + }; + } }); -} +} function initVueComponent (Vue$$1, vueOptions) { vueOptions = vueOptions.default || vueOptions; @@ -1101,7 +1123,7 @@ function parseBasePage (vuePageOptions, { initRelation }); - initHooks(pageOptions.methods, hooks$1); + initHooks(pageOptions.methods, hooks$1, vuePageOptions); pageOptions.methods.onLoad = function (args) { this.$vm.$mp.query = args; // 兼容 mpvue diff --git a/packages/uni-mp-weixin/package.json b/packages/uni-mp-weixin/package.json index 1f4a58732fac1b333d441ba42fb7c26bdb27d68b..d2f66ba441b890c8c31c470038bf0eca53264bcb 100644 --- a/packages/uni-mp-weixin/package.json +++ b/packages/uni-mp-weixin/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-mp-weixin", - "version": "0.0.960", + "version": "0.0.961", "description": "uni-app mp-weixin", "main": "dist/index.js", "scripts": {