Skip to content

Commit 6891ac4

Browse files
author
古映杰
committed
publish to npm with v0.0.29
1 parent 85dc953 commit 6891ac4

6 files changed

Lines changed: 57 additions & 58 deletions

File tree

dist/react-lite.common.js

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ var patchProps = function patchProps(elem, props, newProps) {
543543
};
544544

545545
var removeStyle = function removeStyle(elem, style) {
546-
if (!isObj(style)) {
546+
if (!style) {
547547
return;
548548
}
549549
var elemStyle = elem.style;
@@ -554,7 +554,7 @@ var removeStyle = function removeStyle(elem, style) {
554554
}
555555
};
556556
var setStyle = function setStyle(elem, style) {
557-
if (!isObj(style)) {
557+
if (!style) {
558558
return;
559559
}
560560
var elemStyle = elem.style;
@@ -934,33 +934,27 @@ var clearPendingComponents = function clearPendingComponents() {
934934

935935
function compareTwoTrees(vtree, newVtree, node, parentNode, parentContext) {
936936
var newNode = node;
937-
var isReplace = null;
938937

939938
if (vtree === newVtree) {
939+
// equal
940940
return newNode;
941941
} else if (newVtree === undefined) {
942+
// remove
942943
vtree.destroy(node);
943944
} else if (vtree === undefined) {
945+
// create
944946
newNode = newVtree.init(parentNode, parentContext);
945-
} else if (vtree.type !== newVtree.type) {
946-
isReplace = true;
947-
} else if (newVtree.key !== null) {
948-
if (vtree.key === null || newVtree.key !== vtree.key) {
949-
isReplace = true;
950-
}
951-
} else if (vtree.key !== null) {
952-
isReplace = true;
953-
}
954-
955-
if (isReplace) {
947+
} else if (vtree.type !== newVtree.type || newVtree.key !== vtree.key) {
948+
// set removeNode to no-op, do not remove exist node, then replace it with new node
956949
var $removeNode = removeNode;
957950
removeNode = noop$1;
958951
vtree.destroy(node);
959952
removeNode = $removeNode;
960-
newNode = newVtree.init(function (nextNode) {
961-
return parentNode.replaceChild(nextNode, node);
962-
}, parentContext);
953+
$parentNode = parentNode;
954+
$existNode = node;
955+
newNode = newVtree.init(replaceNode, parentContext);
963956
} else {
957+
// same type and same key -> update
964958
newNode = vtree.update(newVtree, node, parentNode, parentContext);
965959
}
966960

@@ -982,6 +976,13 @@ var appendNode = function appendNode(parentNode, node) {
982976
}
983977
};
984978

979+
var $parentNode = null;
980+
var $existNode = null;
981+
var replaceNode = function replaceNode(newNode) {
982+
$parentNode.replaceChild(newNode, $existNode);
983+
$parentNode = $existNode = null;
984+
};
985+
985986
var getVnode = function getVnode(vnode) {
986987
if (vnode === null) {
987988
vnode = new Velem('noscript', {});

dist/react-lite.js

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@
547547
};
548548

549549
var removeStyle = function removeStyle(elem, style) {
550-
if (!isObj(style)) {
550+
if (!style) {
551551
return;
552552
}
553553
var elemStyle = elem.style;
@@ -558,7 +558,7 @@
558558
}
559559
};
560560
var setStyle = function setStyle(elem, style) {
561-
if (!isObj(style)) {
561+
if (!style) {
562562
return;
563563
}
564564
var elemStyle = elem.style;
@@ -938,33 +938,27 @@
938938

939939
function compareTwoTrees(vtree, newVtree, node, parentNode, parentContext) {
940940
var newNode = node;
941-
var isReplace = null;
942941

943942
if (vtree === newVtree) {
943+
// equal
944944
return newNode;
945945
} else if (newVtree === undefined) {
946+
// remove
946947
vtree.destroy(node);
947948
} else if (vtree === undefined) {
949+
// create
948950
newNode = newVtree.init(parentNode, parentContext);
949-
} else if (vtree.type !== newVtree.type) {
950-
isReplace = true;
951-
} else if (newVtree.key !== null) {
952-
if (vtree.key === null || newVtree.key !== vtree.key) {
953-
isReplace = true;
954-
}
955-
} else if (vtree.key !== null) {
956-
isReplace = true;
957-
}
958-
959-
if (isReplace) {
951+
} else if (vtree.type !== newVtree.type || newVtree.key !== vtree.key) {
952+
// set removeNode to no-op, do not remove exist node, then replace it with new node
960953
var $removeNode = removeNode;
961954
removeNode = noop$1;
962955
vtree.destroy(node);
963956
removeNode = $removeNode;
964-
newNode = newVtree.init(function (nextNode) {
965-
return parentNode.replaceChild(nextNode, node);
966-
}, parentContext);
957+
$parentNode = parentNode;
958+
$existNode = node;
959+
newNode = newVtree.init(replaceNode, parentContext);
967960
} else {
961+
// same type and same key -> update
968962
newNode = vtree.update(newVtree, node, parentNode, parentContext);
969963
}
970964

@@ -986,6 +980,13 @@
986980
}
987981
};
988982

983+
var $parentNode = null;
984+
var $existNode = null;
985+
var replaceNode = function replaceNode(newNode) {
986+
$parentNode.replaceChild(newNode, $existNode);
987+
$parentNode = $existNode = null;
988+
};
989+
989990
var getVnode = function getVnode(vnode) {
990991
if (vnode === null) {
991992
vnode = new Velem('noscript', {});

0 commit comments

Comments
 (0)