From fbe529f3fecd263f684a7053b96e21cf03e76afc Mon Sep 17 00:00:00 2001 From: qiang Date: Thu, 5 Aug 2021 14:33:38 +0800 Subject: [PATCH] fix(App): useNative onParentReady --- .../uni-app-plus/dist/uni-app-view.umd.js | 38 +++++++++++-------- .../uni-app-plus/src/helpers/useNative.ts | 25 +++++++----- 2 files changed, 39 insertions(+), 24 deletions(-) diff --git a/packages/uni-app-plus/dist/uni-app-view.umd.js b/packages/uni-app-plus/dist/uni-app-view.umd.js index b3d7d32d6..3c6373c68 100644 --- a/packages/uni-app-plus/dist/uni-app-view.umd.js +++ b/packages/uni-app-plus/dist/uni-app-view.umd.js @@ -14545,7 +14545,14 @@ } window.addEventListener("updateview", requestPositionUpdate); let onDrawCallbacks = []; - let attachedCallback; + let onSelfReadyCallbacks = []; + function onSelfReady(callback) { + if (onSelfReadyCallbacks) { + onSelfReadyCallbacks.push(callback); + } else { + callback(); + } + } function onParentReady(callback) { const onDraw2 = inject(onDrawKey); const newCallback = (parentPosition) => { @@ -14553,17 +14560,19 @@ onDrawCallbacks.forEach((callback2) => callback2(position)); onDrawCallbacks = null; }; - if (onDraw2) { - onDraw2(newCallback); - } else { - attachedCallback = () => newCallback({ - top: "0px", - left: "0px", - width: Number.MAX_SAFE_INTEGER + "px", - height: Number.MAX_SAFE_INTEGER + "px", - position: "static" - }); - } + onSelfReady(() => { + if (onDraw2) { + onDraw2(newCallback); + } else { + newCallback({ + top: "0px", + left: "0px", + width: Number.MAX_SAFE_INTEGER + "px", + height: Number.MAX_SAFE_INTEGER + "px", + position: "static" + }); + } + }); } const onDraw = function(callback) { if (onDrawCallbacks) { @@ -14575,9 +14584,8 @@ provide(onDrawKey, onDraw); onMounted(() => { updatePosition(); - if (attachedCallback) { - attachedCallback(); - } + onSelfReadyCallbacks.forEach((callback) => callback()); + onSelfReadyCallbacks = null; }); return { position, diff --git a/packages/uni-app-plus/src/helpers/useNative.ts b/packages/uni-app-plus/src/helpers/useNative.ts index ca6a4771c..49dfb1743 100644 --- a/packages/uni-app-plus/src/helpers/useNative.ts +++ b/packages/uni-app-plus/src/helpers/useNative.ts @@ -87,7 +87,14 @@ export function useNative(rootRef: Ref) { window.addEventListener('updateview', requestPositionUpdate) let onDrawCallbacks: OnDrawCallback[] | null = [] - let attachedCallback: () => void + let onSelfReadyCallbacks: Array<() => void> | null = [] + function onSelfReady(callback: () => void) { + if (onSelfReadyCallbacks) { + onSelfReadyCallbacks.push(callback) + } else { + callback() + } + } /** * 父组件绘制完毕,开始绘制当前组件原生部分 * @param callback @@ -99,10 +106,10 @@ export function useNative(rootRef: Ref) { onDrawCallbacks!.forEach((callback) => callback(position)) onDrawCallbacks = null } - if (onDraw) { - onDraw(newCallback) - } else { - attachedCallback = () => + onSelfReady(() => { + if (onDraw) { + onDraw(newCallback) + } else { newCallback({ top: '0px', left: '0px', @@ -110,7 +117,8 @@ export function useNative(rootRef: Ref) { height: Number.MAX_SAFE_INTEGER + 'px', position: 'static', }) - } + } + }) } const onDraw: OnDraw = function (callback: OnDrawCallback) { @@ -125,9 +133,8 @@ export function useNative(rootRef: Ref) { onMounted(() => { updatePosition() - if (attachedCallback) { - attachedCallback() - } + onSelfReadyCallbacks!.forEach((callback) => callback()) + onSelfReadyCallbacks = null }) return { -- GitLab