在 render 阶段 进入 normalizeChildren 函数的时候 是将 children 整理成 vnode[]
也既是 function normalizeChildren (children: any): ?Array<VNode>
在 update 阶段当 传入的 vnode 定义了 tag,那么 将会 进入createChildren(vnode, children, insertedVnodeQueue);
这个函数,也就是 对 children 进行整理。 在 createChildren
函数中 有 个 判断条件
function createChildren(vnode, children, insertedVnodeQueue) {
// children 不应该 一直都是一个数组么,什么条件 会进入 else if 语句
if (Array.isArray(children)) {
for (let i = 0; i < children.length; ++i) {
createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);
}
} else if (isPrimitive(vnode.text)) {
nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
}
}
由于 normalizeChildren
函数 一直 都是 返回一个 数组的,那么 什么条件情况下 createChildren
会进入 isPrimitive(vnode.text)
这个 条件里面