diff --git a/packages/runtime-core/src/createRenderer.ts b/packages/runtime-core/src/createRenderer.ts index 647a4ac9..2c836071 100644 --- a/packages/runtime-core/src/createRenderer.ts +++ b/packages/runtime-core/src/createRenderer.ts @@ -114,7 +114,7 @@ export interface RendererOptions { createComment(text: string): HostNode setText(node: HostNode, text: string): void setElementText(node: HostElement, text: string): void - parentNode(node: HostNode): HostNode | null + parentNode(node: HostNode): HostElement | null nextSibling(node: HostNode): HostNode | null querySelector(selector: string): HostElement | null } @@ -499,10 +499,11 @@ export function createRenderer< // children fast path const oldDynamicChildren = n1.dynamicChildren! for (let i = 0; i < dynamicChildren.length; i++) { + const oldVNode = oldDynamicChildren[i] patch( - oldDynamicChildren[i], + oldVNode, dynamicChildren[i], - el, + hostParentNode(oldVNode.el!)!, null, parentComponent, parentSuspense, diff --git a/packages/runtime-dom/src/nodeOps.ts b/packages/runtime-dom/src/nodeOps.ts index e7b3e86b..7e6b6ed3 100644 --- a/packages/runtime-dom/src/nodeOps.ts +++ b/packages/runtime-dom/src/nodeOps.ts @@ -4,7 +4,11 @@ const svgNS = 'http://www.w3.org/2000/svg' export const nodeOps = { insert: (child: Node, parent: Node, anchor?: Node) => { if (anchor != null) { - parent.insertBefore(child, anchor) + try { + parent.insertBefore(child, anchor) + } catch (e) { + debugger + } } else { parent.appendChild(child) } @@ -32,7 +36,8 @@ export const nodeOps = { el.textContent = text }, - parentNode: (node: Node): Node | null => node.parentNode, + parentNode: (node: Node): HTMLElement | null => + node.parentNode as HTMLElement, nextSibling: (node: Node): Node | null => node.nextSibling,