Skip to content
The translation is synced to the docs on of which the commit hash is 794629c.

Уніфікація слотів
несумісно
​

Огляд ​

Ця зміна уніфікує звичайні та обмежені слоти в 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. Таким чином, міграція може відбутися за один крок:

  1. Замінити всі випадки this.$scopedSlots на this.$slots для версії 3.x.
  2. Замінити всі випадки this.$slots.mySlot на this.$slots.mySlot().

Прапор збірки міграції: INSTANCE_SCOPED_SLOTS