From 44ddf729bae646495e906bb4c0da4cfc9e9b5743 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Mon, 11 Apr 2022 18:29:07 +0800 Subject: [PATCH] fix(mp): subpackage (#3416) --- packages/uni-mp-baidu/src/runtime/index.ts | 3 ++- packages/uni-mp-core/src/runtime/app.ts | 17 ++++++++++++----- packages/uni-mp-core/src/runtime/component.ts | 12 +++++++++++- packages/uni-mp-core/src/runtime/plugin.ts | 3 +++ packages/uni-mp-kuaishou/src/runtime/index.ts | 3 ++- packages/uni-mp-lark/src/runtime/index.ts | 3 ++- packages/uni-mp-qq/src/runtime/index.ts | 3 ++- packages/uni-mp-toutiao/src/runtime/index.ts | 3 ++- packages/uni-mp-weixin/src/runtime/index.ts | 6 ++++-- .../uni-quickapp-webview/src/runtime/index.ts | 3 ++- 10 files changed, 42 insertions(+), 14 deletions(-) diff --git a/packages/uni-mp-baidu/src/runtime/index.ts b/packages/uni-mp-baidu/src/runtime/index.ts index 9b46e14d3..6dae9a35b 100644 --- a/packages/uni-mp-baidu/src/runtime/index.ts +++ b/packages/uni-mp-baidu/src/runtime/index.ts @@ -20,4 +20,5 @@ export const createSubpackageApp = initCreateSubpackageApp(parseAppOptions) ;(swan as any).createApp = (global as any).createApp = createApp ;(swan as any).createPage = createPage ;(swan as any).createComponent = createComponent -;(swan as any).createSubpackageApp = createSubpackageApp +;(swan as any).createSubpackageApp = (global as any).createSubpackageApp = + createSubpackageApp diff --git a/packages/uni-mp-core/src/runtime/app.ts b/packages/uni-mp-core/src/runtime/app.ts index 66f073b56..ef8de891d 100644 --- a/packages/uni-mp-core/src/runtime/app.ts +++ b/packages/uni-mp-core/src/runtime/app.ts @@ -106,6 +106,13 @@ export function initCreateSubpackageApp(parseAppOptions?: ParseAppOptions) { } }) initAppLifecycle(appOptions, vm) + if (process.env.UNI_SUBPACKAGE) { + ;(__GLOBAL__.$subpackages || (__GLOBAL__.$subpackages = {}))[ + process.env.UNI_SUBPACKAGE + ] = { + $vm: vm, + } + } } } @@ -113,6 +120,11 @@ export function initAppLifecycle( appOptions: MiniProgramAppOptions, vm: ComponentPublicInstance ) { + if (isFunction(appOptions.onLaunch)) { + const args = + __GLOBAL__.getLaunchOptionsSync && __GLOBAL__.getLaunchOptionsSync() + appOptions.onLaunch(args) + } if (isFunction(appOptions.onShow) && __GLOBAL__.onAppShow) { __GLOBAL__.onAppShow((args: unknown) => { vm.$callHook('onShow', args) @@ -123,11 +135,6 @@ export function initAppLifecycle( vm.$callHook('onHide', args) }) } - if (isFunction(appOptions.onLaunch)) { - const args = - __GLOBAL__.getLaunchOptionsSync && __GLOBAL__.getLaunchOptionsSync() - vm.$callHook('onLaunch', args || {}) - } } function initLocale(appVm: ComponentPublicInstance) { diff --git a/packages/uni-mp-core/src/runtime/component.ts b/packages/uni-mp-core/src/runtime/component.ts index 6c79d4986..0640b66fc 100644 --- a/packages/uni-mp-core/src/runtime/component.ts +++ b/packages/uni-mp-core/src/runtime/component.ts @@ -144,12 +144,22 @@ interface InitialVNode { props: Record } +function getAppVm() { + if (process.env.UNI_MP_PLUGIN) { + return __GLOBAL__.$vm + } + if (process.env.UNI_SUBPACKAGE) { + return __GLOBAL__.$subpackages[process.env.UNI_SUBPACKAGE].$vm + } + return getApp().$vm +} + export function $createComponent( initialVNode: InitialVNode, options: CreateComponentOptions ) { if (!$createComponentFn) { - $createComponentFn = getApp().$vm.$createComponent + $createComponentFn = getAppVm().$createComponent } const proxy = $createComponentFn( initialVNode, diff --git a/packages/uni-mp-core/src/runtime/plugin.ts b/packages/uni-mp-core/src/runtime/plugin.ts index 4220c2aac..e4ec258ab 100644 --- a/packages/uni-mp-core/src/runtime/plugin.ts +++ b/packages/uni-mp-core/src/runtime/plugin.ts @@ -4,5 +4,8 @@ import { initAppLifecycle, parseApp, ParseAppOptions } from './app' export function initCreatePluginApp(parseAppOptions?: ParseAppOptions) { return function createApp(vm: ComponentPublicInstance) { initAppLifecycle(parseApp(vm, parseAppOptions), vm) + if (process.env.UNI_MP_PLUGIN) { + __GLOBAL__.$vm = vm + } } } diff --git a/packages/uni-mp-kuaishou/src/runtime/index.ts b/packages/uni-mp-kuaishou/src/runtime/index.ts index 21af7a5be..ce59ccebc 100644 --- a/packages/uni-mp-kuaishou/src/runtime/index.ts +++ b/packages/uni-mp-kuaishou/src/runtime/index.ts @@ -18,4 +18,5 @@ export const createSubpackageApp = initCreateSubpackageApp() ;(ks as any).createApp = (global as any).createApp = createApp ;(ks as any).createPage = createPage ;(ks as any).createComponent = createComponent -;(ks as any).createSubpackageApp = createSubpackageApp +;(ks as any).createSubpackageApp = (global as any).createSubpackageApp = + createSubpackageApp diff --git a/packages/uni-mp-lark/src/runtime/index.ts b/packages/uni-mp-lark/src/runtime/index.ts index 6864d089d..4301925f9 100644 --- a/packages/uni-mp-lark/src/runtime/index.ts +++ b/packages/uni-mp-lark/src/runtime/index.ts @@ -19,4 +19,5 @@ export const createSubpackageApp = initCreateSubpackageApp() ;(tt as any).createApp = (global as any).createApp = createApp ;(tt as any).createPage = createPage ;(tt as any).createComponent = createComponent -;(tt as any).createSubpackageApp = createSubpackageApp +;(tt as any).createSubpackageApp = (global as any).createSubpackageApp = + createSubpackageApp diff --git a/packages/uni-mp-qq/src/runtime/index.ts b/packages/uni-mp-qq/src/runtime/index.ts index bc067da75..e95ebe70e 100644 --- a/packages/uni-mp-qq/src/runtime/index.ts +++ b/packages/uni-mp-qq/src/runtime/index.ts @@ -11,4 +11,5 @@ export * from '@dcloudio/uni-mp-weixin/src/runtime' ;(qq as any).createApp = (global as any).createApp = createApp ;(qq as any).createPage = createPage ;(qq as any).createComponent = createComponent -;(qq as any).createSubpackageApp = createSubpackageApp +;(qq as any).createSubpackageApp = (global as any).createSubpackageApp = + createSubpackageApp diff --git a/packages/uni-mp-toutiao/src/runtime/index.ts b/packages/uni-mp-toutiao/src/runtime/index.ts index e54e5de6f..8f02fad55 100644 --- a/packages/uni-mp-toutiao/src/runtime/index.ts +++ b/packages/uni-mp-toutiao/src/runtime/index.ts @@ -19,4 +19,5 @@ export const createSubpackageApp = initCreateSubpackageApp() ;(tt as any).createApp = (global as any).createApp = createApp ;(tt as any).createPage = createPage ;(tt as any).createComponent = createComponent -;(tt as any).createSubpackageApp = createSubpackageApp +;(tt as any).createSubpackageApp = (global as any).createSubpackageApp = + createSubpackageApp diff --git a/packages/uni-mp-weixin/src/runtime/index.ts b/packages/uni-mp-weixin/src/runtime/index.ts index b3bac40b1..b56cfaf6e 100644 --- a/packages/uni-mp-weixin/src/runtime/index.ts +++ b/packages/uni-mp-weixin/src/runtime/index.ts @@ -19,6 +19,8 @@ if (__PLATFORM__ === 'mp-weixin') { ;(wx as any).createApp = (global as any).createApp = createApp ;(wx as any).createPage = createPage ;(wx as any).createComponent = createComponent - ;(wx as any).createPluginApp = createPluginApp - ;(wx as any).createSubpackageApp = createSubpackageApp + ;(wx as any).createPluginApp = (global as any).createPluginApp = + createPluginApp + ;(wx as any).createSubpackageApp = (global as any).createSubpackageApp = + createSubpackageApp } diff --git a/packages/uni-quickapp-webview/src/runtime/index.ts b/packages/uni-quickapp-webview/src/runtime/index.ts index 842ea5d16..efb885f25 100644 --- a/packages/uni-quickapp-webview/src/runtime/index.ts +++ b/packages/uni-quickapp-webview/src/runtime/index.ts @@ -19,4 +19,5 @@ export const createSubpackageApp = initCreateSubpackageApp() ;(qa as any).createApp = (global as any).createApp = createApp ;(qa as any).createPage = createPage ;(qa as any).createComponent = createComponent -;(qa as any).createSubpackageApp = createSubpackageApp +;(qa as any).createSubpackageApp = (global as any).createSubpackageApp = + createSubpackageApp -- GitLab