Skip to content

Commit f1993c8

Browse files
committed
Remove IE11 unmount hack
1 parent b830303 commit f1993c8

File tree

8 files changed

+25
-30
lines changed

8 files changed

+25
-30
lines changed

src/diff/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { BaseComponent, getDomSibling } from '../component';
1212
import { Fragment } from '../create-element';
1313
import { diffChildren } from './children';
1414
import { setProperty } from './props';
15-
import { assign, isArray, removeNode, slice } from '../util';
15+
import { assign, isArray, slice } from '../util';
1616
import options from '../options';
1717

1818
/**
@@ -543,7 +543,7 @@ function diffElementNodes(
543543
// Remove children that are not part of any vnode.
544544
if (excessDomChildren != null) {
545545
for (i = excessDomChildren.length; i--; ) {
546-
removeNode(excessDomChildren[i]);
546+
if (excessDomChildren[i]) excessDomChildren[i].remove();
547547
}
548548
}
549549
}
@@ -647,8 +647,8 @@ export function unmount(vnode, parentVNode, skipRemove) {
647647
}
648648
}
649649

650-
if (!skipRemove) {
651-
removeNode(vnode._dom);
650+
if (!skipRemove && vnode._dom != null && typeof vnode.type != 'function') {
651+
vnode._dom.remove();
652652
}
653653

654654
vnode._component = vnode._parent = vnode._dom = UNDEFINED;

src/util.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,3 @@ import { EMPTY_ARR } from './constants';
33
export const isArray = Array.isArray;
44
export const assign = Object.assign;
55
export const slice = EMPTY_ARR.slice;
6-
7-
/**
8-
* Remove a child node from its parent if attached. This is a workaround for
9-
* IE11 which doesn't support `Element.prototype.remove()`. Using this function
10-
* is smaller than including a dedicated polyfill.
11-
* @param {import('./index').ContainerNode} node The node to remove
12-
*/
13-
export function removeNode(node) {
14-
if (node && node.parentNode) node.parentNode.removeChild(node);
15-
}

test/_util/logCall.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ export function logCall(obj, method) {
3131

3232
let operation;
3333
switch (method) {
34-
case 'removeChild': {
35-
operation = `${serialize(c)}.remove()`;
36-
break;
37-
}
3834
case 'insertBefore': {
3935
if (args[1] === null && args.length === 2) {
4036
operation = `${serialize(this)}.appendChild(${serialize(args[0])})`;

test/browser/fragments.test.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ describe('Fragment', () => {
3131

3232
let resetInsertBefore;
3333
let resetAppendChild;
34-
let resetRemoveChild;
34+
let resetRemove;
35+
let resetRemoveText;
3536

3637
before(() => {
3738
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
3839
resetAppendChild = logCall(Element.prototype, 'appendChild');
39-
resetRemoveChild = logCall(Element.prototype, 'removeChild');
40+
resetRemove = logCall(Element.prototype, 'remove');
41+
resetRemoveText = logCall(Text.prototype, 'remove');
4042
// logCall(CharacterData.prototype, 'remove');
4143
// TODO: Consider logging setting set data
4244
// ```
@@ -52,7 +54,8 @@ describe('Fragment', () => {
5254
after(() => {
5355
resetInsertBefore();
5456
resetAppendChild();
55-
resetRemoveChild();
57+
resetRemove();
58+
resetRemoveText();
5659
});
5760

5861
beforeEach(() => {

test/browser/hydrate.test.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,31 @@ describe('hydrate()', () => {
2525

2626
let resetAppendChild;
2727
let resetInsertBefore;
28-
let resetRemoveChild;
2928
let resetRemove;
29+
let resetRemoveText;
30+
let resetRemoveComment;
3031
let resetSetAttribute;
3132
let resetRemoveAttribute;
3233
let rerender;
3334

3435
before(() => {
3536
resetAppendChild = logCall(Element.prototype, 'appendChild');
3637
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
37-
resetRemoveChild = logCall(Element.prototype, 'removeChild');
3838
resetRemove = logCall(Element.prototype, 'remove');
39+
resetRemoveComment = logCall(Comment.prototype, 'remove');
40+
resetRemoveText = logCall(Text.prototype, 'remove');
3941
resetSetAttribute = logCall(Element.prototype, 'setAttribute');
4042
resetRemoveAttribute = logCall(Element.prototype, 'removeAttribute');
4143
});
4244

4345
after(() => {
4446
resetAppendChild();
4547
resetInsertBefore();
46-
resetRemoveChild();
4748
resetRemove();
49+
resetRemoveText();
4850
resetSetAttribute();
4951
resetRemoveAttribute();
52+
resetRemoveComment();
5053
});
5154

5255
beforeEach(() => {

test/browser/keys.test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,22 @@ describe('keys', () => {
5757
let resetInsertBefore;
5858
let resetRemoveChild;
5959
let resetRemove;
60+
let resetRemoveText;
6061

6162
before(() => {
6263
resetAppendChild = logCall(Element.prototype, 'appendChild');
6364
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
6465
resetRemoveChild = logCall(Element.prototype, 'removeChild');
6566
resetRemove = logCall(Element.prototype, 'remove');
67+
resetRemoveText = logCall(Text.prototype, 'remove');
6668
});
6769

6870
after(() => {
6971
resetAppendChild();
7072
resetInsertBefore();
7173
resetRemoveChild();
7274
resetRemove();
75+
resetRemoveText();
7376
});
7477

7578
beforeEach(() => {

test/browser/placeholders.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,20 @@ describe('null placeholders', () => {
5656

5757
let resetAppendChild;
5858
let resetInsertBefore;
59-
let resetRemoveChild;
59+
let resetRemoveText;
6060
let resetRemove;
6161

6262
before(() => {
6363
resetAppendChild = logCall(Element.prototype, 'appendChild');
6464
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
65-
resetRemoveChild = logCall(Element.prototype, 'removeChild');
6665
resetRemove = logCall(Element.prototype, 'remove');
66+
resetRemoveText = logCall(Text.prototype, 'remove');
6767
});
6868

6969
after(() => {
7070
resetAppendChild();
7171
resetInsertBefore();
72-
resetRemoveChild();
72+
resetRemoveText();
7373
resetRemove();
7474
});
7575

test/browser/render.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe('render()', () => {
3131

3232
let resetAppendChild;
3333
let resetInsertBefore;
34-
let resetRemoveChild;
34+
let resetRemoveText;
3535
let resetRemove;
3636

3737
beforeEach(() => {
@@ -46,14 +46,14 @@ describe('render()', () => {
4646
before(() => {
4747
resetAppendChild = logCall(Element.prototype, 'appendChild');
4848
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
49-
resetRemoveChild = logCall(Element.prototype, 'removeChild');
49+
resetRemoveText = logCall(Text.prototype, 'remove');
5050
resetRemove = logCall(Element.prototype, 'remove');
5151
});
5252

5353
after(() => {
5454
resetAppendChild();
5555
resetInsertBefore();
56-
resetRemoveChild();
56+
resetRemoveText();
5757
resetRemove();
5858
});
5959

0 commit comments

Comments
 (0)