From d4be39be870a324bb50e35242457fff2cce71dd4 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Wed, 21 Sep 2022 10:45:16 -0400 Subject: [PATCH 1/3] Bugfix: don't remove nested DOM elements in unmount --- src/diff/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/diff/index.js b/src/diff/index.js index 390a4a8d64..d53f59b2ac 100644 --- a/src/diff/index.js +++ b/src/diff/index.js @@ -518,7 +518,7 @@ export function unmount(vnode, parentVNode, skipRemove) { if ((r = vnode._children)) { for (let i = 0; i < r.length; i++) { if (r[i]) { - unmount(r[i], parentVNode, typeof vnode.type != 'function'); + unmount(r[i], parentVNode, skipRemove || typeof vnode.type != 'function'); } } } From fc325650531e1f00ef9584e7aa3c86a449215e81 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Wed, 21 Sep 2022 11:15:08 -0400 Subject: [PATCH 2/3] Update index.js --- src/diff/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/diff/index.js b/src/diff/index.js index d53f59b2ac..22a33e53cf 100644 --- a/src/diff/index.js +++ b/src/diff/index.js @@ -516,9 +516,10 @@ export function unmount(vnode, parentVNode, skipRemove) { } if ((r = vnode._children)) { + let skipRemoveChild = skipRemove || typeof vnode.type != 'function'; for (let i = 0; i < r.length; i++) { if (r[i]) { - unmount(r[i], parentVNode, skipRemove || typeof vnode.type != 'function'); + unmount(r[i], parentVNode, skipRemoveChild); } } } From 6b70436a942fccd208779838ac4310e889c4a89d Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Wed, 21 Sep 2022 14:06:32 -0400 Subject: [PATCH 3/3] Update index.js --- src/diff/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/diff/index.js b/src/diff/index.js index 22a33e53cf..e380895c29 100644 --- a/src/diff/index.js +++ b/src/diff/index.js @@ -516,10 +516,9 @@ export function unmount(vnode, parentVNode, skipRemove) { } if ((r = vnode._children)) { - let skipRemoveChild = skipRemove || typeof vnode.type != 'function'; for (let i = 0; i < r.length; i++) { if (r[i]) { - unmount(r[i], parentVNode, skipRemoveChild); + unmount(r[i], parentVNode, skipRemove || typeof vnode.type !== 'function'); } } }