diff --git a/src/core/vdom/patch.js b/src/core/vdom/patch.js index 3c72c3d46ae..713f43132bf 100644 --- a/src/core/vdom/patch.js +++ b/src/core/vdom/patch.js @@ -69,16 +69,16 @@ export function createPatchFunction (backend) { function createRmCb (childElm, listeners) { function remove () { if (--remove.listeners === 0) { - removeElement(childElm) + removeNode(childElm) } } remove.listeners = listeners return remove } - function removeElement (el) { + function removeNode (el) { const parent = nodeOps.parentNode(el) - // element may have already been removed due to v-html + // element may have already been removed due to v-html / v-text if (parent) { nodeOps.removeChild(parent, el) } @@ -298,7 +298,7 @@ export function createPatchFunction (backend) { removeAndInvokeRemoveHook(ch) invokeDestroyHook(ch) } else { // Text node - nodeOps.removeChild(parentElm, ch.elm) + removeNode(ch.elm) } } } @@ -328,7 +328,7 @@ export function createPatchFunction (backend) { rm() } } else { - removeElement(vnode.elm) + removeNode(vnode.elm) } } diff --git a/test/unit/modules/vdom/modules/dom-props.spec.js b/test/unit/modules/vdom/modules/dom-props.spec.js index cd0a64fd916..90176759ab3 100644 --- a/test/unit/modules/vdom/modules/dom-props.spec.js +++ b/test/unit/modules/vdom/modules/dom-props.spec.js @@ -52,6 +52,16 @@ describe('vdom domProps module', () => { const elm2 = patch(null, vnode2) expect(elm2.textContent).toBe('hi') expect(vnode2.children.length).toBe(0) + + const vnode3 = new VNode('div', undefined, undefined, '123') + patch(null, vnode3) + const elm3 = patch(vnode3, vnode2) + expect(elm3.textContent).toBe('hi') + + const vnode4 = new VNode('div', undefined, undefined, new VNode('span')) + patch(null, vnode4) + const elm4 = patch(vnode4, vnode) + expect(elm4.textContent).toBe('hi') }) it('should handle mutating observed props object', done => {