Уніфікація слотів несумісно
Огляд
Ця зміна уніфікує звичайні та обмежені слоти в 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.header3.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().