In React is very easy, since there's no "slots". Everything are parameters. But I don't know how to pass a slot as a parameter. Here's what I did.
I created a new component, which uses the v-menu
component from Vuetify:
// SelectorComponent.vue
<template>
<v-menu>
<template v-slot:activator="{ on }">
<slot name="activator" v-on="on" />
</template>
...
Then I used that component:
<Selector>
<template v-slot:activator="{ on }">
<v-btn text v-on="on">Type</v-btn>
</template>
</Selector>
And when you presses the "Type" button, it doesn't show the menu. However, if I replace the slot by the button, it works:
// It works!
<template>
<v-menu outlined :close-on-content-click="false" offset-y>
<template v-slot:activator="{ on, attrs }">
<v-btn text v-on="on">Type</v-btn>
</template>
what am I doing wrong?
You should use
scoped slots
by naming the slotactivator
and bindingon
attribute toon
slot prop which could be drilled down to your custom component, inside it you receive thaton
as<template v-slot:activator="{ on }">
:then use it like :