[FIX] component: improve error handling

In the following situation: A parent of B, B parent of C, with an error
when C is mounted, caught by B and retriggering a rendering in B, then
the onMounted hook of A wasn't properly called. This commit fixes this
problem.
This commit is contained in:
Géry Debongnie
2021-11-30 08:14:01 +01:00
committed by Aaron Bohy
parent a1c619f094
commit 1da3ecdbee
5 changed files with 290 additions and 13 deletions
+8
View File
@@ -45,6 +45,14 @@ export function handleError(params: ErrorParams) {
const node = "node" in params ? params.node : params.fiber.node;
const fiber = "fiber" in params ? params.fiber : node.fiber!;
// resets the fibers on components if possible. This is important so that
// new renderings can be properly included in the initial one, if any.
let current: Fiber | null = fiber;
do {
current.node.fiber = current;
current = current.parent;
} while (current);
fibersInError.set(fiber.root, error);
const handled = _handleError(node, error, true);