I have an array of 10 items that have half of them with the type: 'Normal' and the other half with the type: 'Variant'. I am trying to pass them into MyComponent and then slot in Component1 if the type is Normal and slot in Component2 if the type is Variant.
I am having an issue because I keep getting Component1 slotted in all 10 times though instead of half Component1 and half Component2
Parent
<MyComponent :items="items">
<template v-slot="slotProps">
<Component1
v-if="slotProps.item.type === 'Normal'"
/>
<Component2
v-if="slotProps.item.type === 'Variant'"
:class="$style.gridCover"
/>
</template>
</MyComponent>
MyComponent.vue
<template v-for="(item, index) in items">
<div
:key="index"
:class="$style.gridItem"
>
<slot :item="item"></slot>
</div>
</template>
CodePudding user response:
I just saw the object in the documentation called slotProps. Is your issue stemming from something like this?
What is slotProps.item supposed to contain? If it's distinct from the array of items then detailing the data might help.
CodePudding user response:
Make two name slot in MyComponent.vue
And Then use
v-ifinside MyComponent.vue, not in Parent
