fix(renderer): should also use latest parent node when patching block child components
This commit is contained in:
parent
3deb20df63
commit
9f52dce0d5
@ -594,21 +594,24 @@ export function createRenderer<
|
||||
) {
|
||||
for (let i = 0; i < newChildren.length; i++) {
|
||||
const oldVNode = oldChildren[i]
|
||||
if (!oldVNode) {
|
||||
debugger
|
||||
}
|
||||
// Determine the container (parent element) for the patch.
|
||||
// - In the case of a Fragment, we need to provide the actual parent
|
||||
// of the Fragment itself so it can move its children.
|
||||
// - In the case of a Comment, this is likely a v-if toggle, which also
|
||||
// needs the correct parent container.
|
||||
// - In the case of a component, it could contain anything.
|
||||
// In other cases, the parent container is not actually used so we just
|
||||
// pass the block element here to avoid a DOM parentNode call.
|
||||
const container =
|
||||
oldVNode.type === Fragment ||
|
||||
oldVNode.type === Comment ||
|
||||
oldVNode.shapeFlag & ShapeFlags.COMPONENT
|
||||
? hostParentNode(oldVNode.el!)!
|
||||
: fallbackContainer
|
||||
patch(
|
||||
oldVNode,
|
||||
newChildren[i],
|
||||
// - In the case of a Fragment, we need to provide the actual parent
|
||||
// of the Fragment itself so it can move its children.
|
||||
// - In the case of a Comment, this is likely a v-if toggle, which also
|
||||
// needs the correct parent container.
|
||||
// In other cases, the parent container is not actually used so we just
|
||||
// pass the block element here to avoid a DOM parentNode call.
|
||||
oldVNode.type === Fragment || oldVNode.type === Comment
|
||||
? hostParentNode(oldVNode.el!)!
|
||||
: fallbackContainer,
|
||||
container,
|
||||
null,
|
||||
parentComponent,
|
||||
parentSuspense,
|
||||
|
Loading…
Reference in New Issue
Block a user