提交 fbe529f3 编写于 作者: Q qiang

fix(App): useNative onParentReady

上级 07414abb
......@@ -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,
......
......@@ -87,7 +87,14 @@ export function useNative(rootRef: Ref<HTMLElement | null>) {
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<HTMLElement | null>) {
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<HTMLElement | null>) {
height: Number.MAX_SAFE_INTEGER + 'px',
position: 'static',
})
}
}
})
}
const onDraw: OnDraw = function (callback: OnDrawCallback) {
......@@ -125,9 +133,8 @@ export function useNative(rootRef: Ref<HTMLElement | null>) {
onMounted(() => {
updatePosition()
if (attachedCallback) {
attachedCallback()
}
onSelfReadyCallbacks!.forEach((callback) => callback())
onSelfReadyCallbacks = null
})
return {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册