提交 3a646ffb 编写于 作者: fxy060608's avatar fxy060608

fix(app): handle lifecycle hook error

上级 cd3c3e53
......@@ -1067,6 +1067,13 @@ var serviceContext = (function (vue) {
function cacheStringFunction(fn) {
return cache(fn);
}
const invokeArrayFns = (fns, arg) => {
let ret;
for (let i = 0; i < fns.length; i++) {
ret = fns[i](arg);
}
return ret;
};
function once(fn, ctx = null) {
let res;
return ((...args) => {
......@@ -1867,14 +1874,7 @@ var serviceContext = (function (vue) {
}
}
const hooks = vm.$[name];
if (!hooks) {
return;
}
let ret;
for (let i = 0; i < hooks.length; i++) {
ret = vue.callWithErrorHandling(hooks[i], vm.$, name, [args]);
}
return ret;
return hooks && invokeArrayFns(hooks, args);
}
function normalizeRoute(toRoute) {
......@@ -8941,8 +8941,13 @@ var serviceContext = (function (vue) {
}
});
if (mpType === 'page') {
invokeHook(publicThis, ON_LOAD, instance.attrs.__pageQuery);
invokeHook(publicThis, ON_SHOW);
try {
invokeHook(publicThis, ON_LOAD, instance.attrs.__pageQuery);
invokeHook(publicThis, ON_SHOW);
}
catch (e) {
console.error(e.message + '\n' + e.stack);
}
}
}
......
import { callWithErrorHandling, ComponentPublicInstance } from 'vue'
import { ComponentPublicInstance } from 'vue'
import { isString } from '@vue/shared'
import { invokeArrayFns } from '@dcloudio/uni-shared'
import { getCurrentPageVm } from './page'
export function invokeHook(name: string, args?: unknown): unknown
......@@ -36,14 +37,7 @@ export function invokeHook(
}
}
const hooks = vm.$[name as string]
if (!hooks) {
return
}
let ret
for (let i = 0; i < hooks.length; i++) {
ret = callWithErrorHandling(hooks[i], vm.$, name as any, [args])
}
return ret
return hooks && invokeArrayFns(hooks, args)
}
export function hasHook(vm: ComponentPublicInstance | number, name: string) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册