From 4fb02d59c7fcaf011e2127e5476e9fdbc9109f53 Mon Sep 17 00:00:00 2001 From: Thorsten Luenborg Date: Sat, 11 Feb 2023 15:53:43 +0100 Subject: [PATCH 1/2] fix(runtime-core): ensure suspense creates dep's setupEffect with correct optimized flag --- packages/runtime-core/src/components/Suspense.ts | 5 +++-- packages/runtime-core/src/renderer.ts | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/runtime-core/src/components/Suspense.ts b/packages/runtime-core/src/components/Suspense.ts index 2862178758f..1b2ebe18546 100644 --- a/packages/runtime-core/src/components/Suspense.ts +++ b/packages/runtime-core/src/components/Suspense.ts @@ -386,7 +386,8 @@ export interface SuspenseBoundary { next(): RendererNode | null registerDep( instance: ComponentInternalInstance, - setupRenderEffect: SetupRenderEffectFn + setupRenderEffect: SetupRenderEffectFn, + optimized: boolean ): void unmount(parentSuspense: SuspenseBoundary | null, doRemove?: boolean): void } @@ -587,7 +588,7 @@ function createSuspenseBoundary( return suspense.activeBranch && next(suspense.activeBranch) }, - registerDep(instance, setupRenderEffect) { + registerDep(instance, setupRenderEffect, optimized = false) { const isInPendingSuspense = !!suspense.pendingBranch if (isInPendingSuspense) { suspense.deps++ diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index b1e048e588b..b07f06dd9f6 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -1228,7 +1228,8 @@ function baseCreateRenderer( // setup() is async. This component relies on async logic to be resolved // before proceeding if (__FEATURE_SUSPENSE__ && instance.asyncDep) { - parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect) + parentSuspense && + parentSuspense.registerDep(instance, setupRenderEffect, optimized) // Give it a placeholder if this is not hydration // TODO handle self-defined fallback From 26e273f0542ce5b1c16e7b331cbb5588dc201060 Mon Sep 17 00:00:00 2001 From: Thorsten Luenborg Date: Sun, 12 Feb 2023 11:55:44 +0100 Subject: [PATCH 2/2] refactor: drop default value for new `optimized` argument --- packages/runtime-core/src/components/Suspense.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime-core/src/components/Suspense.ts b/packages/runtime-core/src/components/Suspense.ts index 1b2ebe18546..a1684b8ab40 100644 --- a/packages/runtime-core/src/components/Suspense.ts +++ b/packages/runtime-core/src/components/Suspense.ts @@ -588,7 +588,7 @@ function createSuspenseBoundary( return suspense.activeBranch && next(suspense.activeBranch) }, - registerDep(instance, setupRenderEffect, optimized = false) { + registerDep(instance, setupRenderEffect, optimized) { const isInPendingSuspense = !!suspense.pendingBranch if (isInPendingSuspense) { suspense.deps++