diff --git a/packages/uni-mp-baidu/dist/index.js b/packages/uni-mp-baidu/dist/index.js index 986be9a1e07fac51fa804c4be4d68a1716abe048..ee5a7fc4b0f8cc6d1cec2b3f6f24b66db17c4851 100644 --- a/packages/uni-mp-baidu/dist/index.js +++ b/packages/uni-mp-baidu/dist/index.js @@ -1130,7 +1130,7 @@ function handleLink (event) { vueOptions.parent = parentVm; } -const mocks$1 = ['nodeId']; +const mocks$1 = ['nodeId', 'componentName']; function isPage$1 () { return !this.ownerId diff --git a/packages/uni-mp-baidu/package.json b/packages/uni-mp-baidu/package.json index 8393c09ab254f28617ffd6ca4f86f5384e4ccdb6..12e693cf5536b2bdc8e98baa3fa3964893eebb9e 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.844", + "version": "0.0.845", "description": "uni-app mp-baidu", "main": "dist/index.js", "scripts": { diff --git a/src/core/service/plugins/index.js b/src/core/service/plugins/index.js index f6c2ceea89acc0d03adcac4948e0f51dcefad871..9c13783e38609c8ccf7bbad1b0fcd8b780cfdf3b 100644 --- a/src/core/service/plugins/index.js +++ b/src/core/service/plugins/index.js @@ -16,6 +16,10 @@ import { createPageMixin } from './page' +import { + lifecycleMixin +} from './lifecycle' + import { getTabBarScrollPosition } from './app/router-guard' @@ -55,7 +59,9 @@ function getLocation (base = '/') { export default { install (Vue, { routes - } = {}) { + } = {}) { + lifecycleMixin(Vue) + const minId = getMinId(routes) const router = new VueRouter({ id: minId, diff --git a/src/core/service/plugins/lifecycle.js b/src/core/service/plugins/lifecycle.js new file mode 100644 index 0000000000000000000000000000000000000000..620f7cae4155a08a9a6c5a02361c0f0aa43a050f --- /dev/null +++ b/src/core/service/plugins/lifecycle.js @@ -0,0 +1,57 @@ +/* @flow */ + +const LIFECYCLE_HOOKS = [ + // App + 'onLaunch', + 'onShow', + 'onHide', + 'onUniNViewMessage', + 'onError', + // Page + 'onLoad', + // 'onShow', + 'onReady', + // 'onHide', + 'onUnload', + 'onPullDownRefresh', + 'onReachBottom', + 'onTabItemTap', + 'onShareAppMessage', + 'onResize', + 'onPageScroll', + 'onNavigationBarButtonTap', + 'onBackPress', + 'onNavigationBarSearchInputChanged', + 'onNavigationBarSearchInputConfirmed', + 'onNavigationBarSearchInputClicked', + // Component + // 'onReady', // 兼容旧版本,应该移除该事件 + 'onPageShow', + 'onPageHide', + 'onPageResize' +] +export function lifecycleMixin (Vue) { + // fixed vue-class-component + const oldExtend = Vue.extend + Vue.extend = function (extendOptions) { + extendOptions = extendOptions || {} + + const methods = extendOptions.methods + if (methods) { + Object.keys(methods).forEach(methodName => { + if (LIFECYCLE_HOOKS.indexOf(methodName) !== -1) { + extendOptions[methodName] = methods[methodName] + delete methods[methodName] + } + }) + } + + return oldExtend.call(this, extendOptions) + } + + const strategies = Vue.config.optionMergeStrategies + const mergeHook = strategies.created + LIFECYCLE_HOOKS.forEach(hook => { + strategies[hook] = mergeHook + }) +} diff --git a/src/core/service/plugins/util.js b/src/core/service/plugins/util.js index 55819da95ec37d670efd5db59ffa61c6b1443db2..b9f484167124825c5fd6b3d484683e85c26c3bf6 100644 --- a/src/core/service/plugins/util.js +++ b/src/core/service/plugins/util.js @@ -1,9 +1,5 @@ -import { - isFn -} from 'uni-shared' - function callHook (vm, hook, params) { - return isFn(vm.$options[hook]) && vm.$options[hook].apply(vm, params) + return vm.__call_hook(hook, params) } export function callAppHook (vm, hook, ...params) { @@ -20,12 +16,12 @@ export function callPageHook (vm, hook, ...params) { vm.$mp.query = params[0] UniServiceJSBridge.publishHandler('onPageLoad', vm, vm.$page.id) } - if (hook === 'onShow') { - if ( - vm.$route.meta.isTabBar && - vm.$route.params.detail - ) { - UniServiceJSBridge.emit('onTabItemTap', vm.$route.params.detail) + if (hook === 'onShow') { + if ( + vm.$route.meta.isTabBar && + vm.$route.params.detail + ) { + UniServiceJSBridge.emit('onTabItemTap', vm.$route.params.detail) } UniServiceJSBridge.publishHandler('onPageShow', vm, vm.$page.id) } @@ -34,4 +30,4 @@ export function callPageHook (vm, hook, ...params) { console.debug(`${vm.$page.route}[${vm.$page.id}]:${hook} have been invoked`) } return callHook(vm, hook, params) -} +} diff --git a/src/platforms/mp-baidu/runtime/wrapper/util.js b/src/platforms/mp-baidu/runtime/wrapper/util.js index 4d26b0ff5d284f96d0a8d6ced433ff741e772f31..b96b87a50b5cc8657b4cfb60607fe8d42fbe2a22 100644 --- a/src/platforms/mp-baidu/runtime/wrapper/util.js +++ b/src/platforms/mp-baidu/runtime/wrapper/util.js @@ -1,4 +1,4 @@ -export const mocks = ['nodeId'] +export const mocks = ['nodeId', 'componentName'] export function isPage () { return !this.ownerId