Skip to content

Commit 08b93e0

Browse files
authored
Merge branch 'master' into ts_ondblclick
2 parents b06ff84 + 465dacb commit 08b93e0

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

src/h.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export function h(nodeName, attributes) {
2525
for (i=child.length; i--; ) stack.push(child[i]);
2626
}
2727
else {
28-
if (child===true || child===false) child = null;
28+
if (typeof child==='boolean') child = null;
2929

3030
if ((simple = typeof nodeName!=='function')) {
3131
if (child==null) child = '';

src/vdom/diff.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ function idiff(dom, vnode, context, mountAll, componentRoot) {
6666
prevSvgMode = isSvgMode;
6767

6868
// empty values (null, undefined, booleans) render as empty Text nodes
69-
if (vnode==null || vnode===false || vnode===true) vnode = '';
69+
if (vnode==null || typeof vnode==='boolean') vnode = '';
7070

7171

7272
// Fast case: Strings & Numbers create/update Text nodes.
@@ -94,18 +94,20 @@ function idiff(dom, vnode, context, mountAll, componentRoot) {
9494

9595

9696
// If the VNode represents a Component, perform a component diff:
97-
if (typeof vnode.nodeName==='function') {
97+
let vnodeName = vnode.nodeName;
98+
if (typeof vnodeName==='function') {
9899
return buildComponentFromVNode(dom, vnode, context, mountAll);
99100
}
100101

101102

102103
// Tracks entering and exiting SVG namespace when descending through the tree.
103-
isSvgMode = vnode.nodeName==='svg' ? true : vnode.nodeName==='foreignObject' ? false : isSvgMode;
104+
isSvgMode = vnodeName==='svg' ? true : vnodeName==='foreignObject' ? false : isSvgMode;
104105

105106

106107
// If there's no existing element or it's the wrong type, create a new one:
107-
if (!dom || !isNamedNode(dom, String(vnode.nodeName))) {
108-
out = createNode(String(vnode.nodeName), isSvgMode);
108+
vnodeName = String(vnodeName);
109+
if (!dom || !isNamedNode(dom, vnodeName)) {
110+
out = createNode(vnodeName, isSvgMode);
109111

110112
if (dom) {
111113
// move children into the replacement node

test/shared/h.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,13 @@ describe('h(jsx)', () => {
208208
.with.property('children')
209209
.that.deep.equals(['onetwothree']);
210210
});
211+
212+
it('should not merge children of components', () => {
213+
let Component = ({children}) => children;
214+
let r = h(Component, null, 'x', 'y');
215+
216+
expect(r).to.be.an('object')
217+
.with.property('children')
218+
.that.deep.equals(['x', 'y']);
219+
});
211220
});

0 commit comments

Comments
 (0)