From c95629c62352c453920a71a9c5bcca1e9a186ed8 Mon Sep 17 00:00:00 2001 From: Leo Horie Date: Fri, 16 Dec 2016 15:21:57 -0500 Subject: [PATCH] handles noop from undefined to null #1473 --- render/render.js | 2 +- render/tests/test-updateNodes.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/render/render.js b/render/render.js index 9ee2628e..023491f3 100644 --- a/render/render.js +++ b/render/render.js @@ -134,7 +134,7 @@ module.exports = function($window) { if (old.length === vnodes.length && isUnkeyed) { for (var i = 0; i < old.length; i++) { if (old[i] === vnodes[i]) continue - else if (old[i] == null) insertNode(parent, createNode(vnodes[i], hooks, ns), getNextSibling(old, i + 1, nextSibling)) + else if (old[i] == null && vnodes[i] != null) insertNode(parent, createNode(vnodes[i], hooks, ns), getNextSibling(old, i + 1, nextSibling)) else if (vnodes[i] == null) removeNodes(old, i, i + 1, vnodes) else updateNode(parent, old[i], vnodes[i], hooks, getNextSibling(old, i + 1, nextSibling), false, ns) } diff --git a/render/tests/test-updateNodes.js b/render/tests/test-updateNodes.js index 7b0f9715..524db029 100644 --- a/render/tests/test-updateNodes.js +++ b/render/tests/test-updateNodes.js @@ -104,6 +104,15 @@ o.spec("updateNodes", function() { o(updated[0].dom.nodeValue).equals("a") o(updated[0].dom).equals(root.childNodes[0]) }) + o("handles undefined to null noop", function() { + var vnodes = [null, {tag: "div"}] + var updated = [undefined, {tag: "div"}] + + render(root, vnodes) + render(root, updated) + + o(root.childNodes.length).equals(1) + }) o("reverses els w/ even count", function() { var vnodes = [{tag: "a", key: 1}, {tag: "b", key: 2}, {tag: "i", key: 3}, {tag: "s", key: 4}] var updated = [{tag: "s", key: 4}, {tag: "i", key: 3}, {tag: "b", key: 2}, {tag: "a", key: 1}]