插槽统一 重大变更
概述
此变更在 3.x 中统一了普通插槽和作用域插槽。
以下是变更的简要概述
this.$slots
现在将插槽公开为函数- 重大变更:
this.$scopedSlots
已移除
有关更多信息,请继续阅读!
2.x 语法
使用渲染函数时,即 h
,2.x 以前在内容节点上定义 slot
数据属性。
js
// 2.x Syntax
h(LayoutComponent, [
h('div', { slot: 'header' }, this.header),
h('div', { slot: 'content' }, this.content)
])
此外,引用作用域插槽时,可以使用以下语法引用它们
js
// 2.x Syntax
this.$scopedSlots.header
3.x 语法
在 3.x 中,插槽被定义为当前节点的子节点,作为对象
js
// 3.x Syntax
h(LayoutComponent, {}, {
header: () => h('div', this.header),
content: () => h('div', this.content)
})
当您需要以编程方式引用作用域插槽时,它们现在已统一到 $slots
选项中。
js
// 2.x Syntax
this.$scopedSlots.header
// 3.x Syntax
this.$slots.header()
迁移策略
大多数变更已在 2.6 中发布。因此,迁移可以一步完成
- 在 3.x 中将所有
this.$scopedSlots
出现替换为this.$slots
。 - 将所有
this.$slots.mySlot
出现替换为this.$slots.mySlot()