Уніфікація слотів несумісно
Огляд
Ця зміна уніфікує звичайні та обмежені слоти в 3.x.
Ось короткий огляд того, що змінилося:
this.$slots
тепер відкриває слоти як функції- НЕСУМІСНО:
this.$scopedSlots
видалено
Щоб дізнатися більше, читайте далі!
2.x Синтаксис
When using the render function, i.e., h
, 2.x used to define the slot
data property on the content nodes. При використанні функції render, тобто h
, у версії 2.x потрібно було вказувати властивість slot
на вузлах контенту.
js
// 2.x Синтаксис
h(LayoutComponent, [
h('div', { slot: 'header' }, this.header),
h('div', { slot: 'content' }, this.content)
])
Крім того, при посиланні на обмежені слоти, на них можна посилатися, використовуючи наступний синтаксис:
js
// 2.x Синтаксис
this.$scopedSlots.header
3.x Синтаксис
У версії 3.x слоти визначаються як дочірні об'єкти поточного вузла:
js
// 3.x Синтаксис
h(LayoutComponent, {}, {
header: () => h('div', this.header),
content: () => h('div', this.content)
})
А якщо вам потрібно програмно звернутися до обмежених слотів, то їх тепер об'єднано в опцію $slots
.
js
// 2.x Синтаксис
this.$scopedSlots.header
// 3.x Синтаксис
this.$slots.header()
Стратегія міграції
Більшість змін вже було перенесено до версії 2.6. Таким чином, міграція може відбутися за один крок:
- Замінити всі випадки
this.$scopedSlots
наthis.$slots
для версії 3.x. - Замінити всі випадки
this.$slots.mySlot
наthis.$slots.mySlot()
.