Skip to content

Commit a1a9bd7

Browse files
committed
fix: hmr触发多次defineProperty导致报错#dc-issue/17355
1 parent 096a281 commit a1a9bd7

File tree

1 file changed

+12
-9
lines changed
  • packages/uni-h5/src/x/framework/setup

1 file changed

+12
-9
lines changed

packages/uni-h5/src/x/framework/setup/page.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -304,15 +304,18 @@ export function initXPage(
304304
) {
305305
initPageVm(vm, page)
306306
// 获取 packages/uni-h5/src/framework/components/page/index.ts defineSystemComponent page currentInstance
307-
Object.defineProperty(vm, '$pageLayoutInstance', {
308-
get() {
309-
let res = vm.$?.parent
310-
while (res && res.type?.name !== 'Page') {
311-
res = res.parent
312-
}
313-
return res
314-
},
315-
})
307+
if (!('$pageLayoutInstance' in vm)) {
308+
Object.defineProperty(vm, '$pageLayoutInstance', {
309+
get() {
310+
// @ts-expect-error !('$pageLayoutInstance' in vm)导致vm推断为never,不可使用vm.hasOwnProperty
311+
let res = vm.$?.parent
312+
while (res && res.type?.name !== 'Page') {
313+
res = res.parent
314+
}
315+
return res
316+
},
317+
})
318+
}
316319
vm.$basePage = vm.$page as Page.PageInstance['$page']
317320
const pageInstance = vm.$pageLayoutInstance!
318321
if (!isDialogPageInstance(pageInstance)) {

0 commit comments

Comments
 (0)