Можно ли вызвать метод из одного компонента внутри scoped слот второго компонента

«Можно ли вызвать метод из одного компонента внутри scoped слот второго компонента» — вопрос из категории Vue, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. Для этого нужно передать метод как проп в компонент, который содержит scoped slot, а затем вызвать его внутри слота.

Пример:

<!-- ParentComponent.vue -->
<template>
  <ChildComponent v-slot="{ callParentMethod }">
    <button @click="callParentMethod">Call Parent Method</button>
  </ChildComponent>
</template>

<script>
export default {
  methods: {
    parentMethod() {
      console.log('Parent method called!');
    }
  }
}
</script>

<!-- ChildComponent.vue -->
<template>
  <div>
    <slot :callParentMethod="parentMethod"></slot>
  </div>
</template>

<script>
export default {
  props: ['parentMethod']
}
</script>

Здесь parentMethod передается в ChildComponent как проп, а затем вызывается через scoped slot. Важно соблюдать правильную передачу методов и их контекст (this).