createElement(tagName,{数据对象},[子节点]);
return createElement(
'h' + this.level,
[
createElement('a', {
attrs: {
name: headingId,
href: '#' + headingId
}
}, this.$slots.default)
]
)
为什么可以直接越过数据对象,设置子节点,
虽然形参是可选的,但是作为第二个参数,不是作为数据对象传入了吗?
怎么能设置子节点呢?
第二个问题:数据对象内部的插槽没看懂,大佬解释下
// 作用域插槽的格式为
// { name: props => VNode | Array<VNode> }
scopedSlots: {
default: props => createElement('span', props.text)
},
// 如果组件是其它组件的子组件,需为插槽指定名称
slot: 'name-of-slot',
// 其它特殊顶层 properte
这两行要怎么看,有点疑惑,
createElement
实现了函数的重载的,如果第二个参数是数组的话,会认为没有属性参数,直接认为是子节点scopedSlots
是作用域插槽,也就是会给你传递参数,然后你根据参数决定渲染成什么样,所以才会需要你给他提供成一个函数;至于slot
,是因为你现在这部分是父组件的一部分,你指定这个放在父组件的哪个插槽里面