手写render的时候,第三个参数即children, 如果children是一个数组,里面的每项好像没有text属性?
来源:2-7 createElement

前端沙雕
2020-06-05
return createElement(
‘h’ + this.level,
[
createElement(‘a’, {
attrs: {
name: headingId,
href: ‘#’ + headingId
}
}, [‘message’, ‘abc’])
]
)
},
function isTextNode (node): boolean {
return isDef(node) && isDef(node.text) && isFalse(node.isComment)
}
children里面的内容都没有text属性,那么怎么会有isDef(node.text)
写回答
2回答
-
text 属性是可以自己手写的
文本节点可以简写为基础类型字符串,也可以写成[{text:'message'},{text:'abc'}]带有 text 这个特定key 的对象
当 children 是[‘message’, ‘abc’]的时候,会走到 normalizeArrayChildren中的isPrimitive判断,
当 children 是[{text:'message'},{text:'abc'}]的时候会走到normalizeArrayChildren中的isTextNode判断
所以文本节点是可以手写成引用类型的,{text:'xxx'} 相当于 'xxx'
112020-06-12 -
ustbhuangyi
2020-06-05
原始数据会走到这个逻辑吧00
相似问题