allow cond swapping of Lazy vnodes & vnodes; fix #884
- Allow conditionally swapping regular vnodes with Lazy vnodes. - Allow Lazy "string" nodes for consistency.
This commit is contained in:
parent
3186fe180f
commit
66d1644b35
12
src/index.js
12
src/index.js
|
@ -359,8 +359,8 @@ var propsChanged = function(a, b) {
|
|||
|
||||
var getVNode = function(newVNode, oldVNode) {
|
||||
return newVNode.type === LAZY_NODE
|
||||
? ((!oldVNode || propsChanged(oldVNode.lazy, newVNode.lazy)) &&
|
||||
((oldVNode = newVNode.lazy.view(newVNode.lazy)).lazy = newVNode.lazy),
|
||||
? ((!oldVNode || !oldVNode.lazy || propsChanged(oldVNode.lazy, newVNode.lazy)) &&
|
||||
((oldVNode = toVNode(newVNode.lazy.view(newVNode.lazy))).lazy = newVNode.lazy),
|
||||
oldVNode)
|
||||
: newVNode
|
||||
}
|
||||
|
@ -380,6 +380,10 @@ var createTextVNode = function(value, node) {
|
|||
return createVNode(value, EMPTY_OBJ, EMPTY_ARR, node, undefined, TEXT_NODE)
|
||||
}
|
||||
|
||||
var toVNode = function(vnode){
|
||||
return typeof vnode === "object" ? vnode : createTextVNode(vnode)
|
||||
}
|
||||
|
||||
var recycleNode = function(node) {
|
||||
return node.nodeType === TEXT_NODE
|
||||
? createTextVNode(node.nodeValue, node)
|
||||
|
@ -411,9 +415,7 @@ export var h = function(name, props) {
|
|||
rest.push(vdom[i])
|
||||
}
|
||||
} else if (vdom === false || vdom === true || vdom == null) {
|
||||
} else {
|
||||
children.push(typeof vdom === "object" ? vdom : createTextVNode(vdom))
|
||||
}
|
||||
} else children.push(toVNode(vdom))
|
||||
}
|
||||
|
||||
props = props || EMPTY_OBJ
|
||||
|
|
Loading…
Reference in New Issue