После добавления v-bind с slot, он пропадает из $slots?

Vue 2.*

Простой компонент
<template>
  <div>
    <div v-if="$slots.header">
      <slot
        name="header"
        v-bind:header="user"
      ></slot>
    </div>
    <div v-else>
      Заголовок не передан
    </div>
  </div>
</template>

<script>
export default {
  name: "TestComponent",
  data: function () {
    return {
      user: {
        name: 'Dima'
      }
    }
  }
}
</script>

Пример использования со slot
<TestComponent>
      <template v-slot:header="{ user }">
        <h1>{{ user.name }}</h1>
      </template>
    </TestComponent>


Получаю заголовок не передан, проблема возникает после добавления v-bind ?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Конечно пропадает, он теперь в $scopedSlots.

Ну и разберитесь с именами:

v-bind:header="user"

v-slot:header="{ user }"

Привязываете параметр с именем header, а использовать пытаетесь user.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы