@ekrist1 There's nothing wrong with using Vue components in Blade's @foreach. Especially if the component requires specific data (in your case a contact). You can pass data as props, for example...
@foreach($contacts as $contact)
{{ display something }}
<favorite :contact="{{ $contact }}"></favorite>
@endforeach
Or, you can have a contacts component, that accepts the collection of $contacts and uses Vue's v-for to loop over them, for example.
<contacts :contacts="{{ $contacts }}"></contacts>
// Contacts.vue
<template>
<div>
<contact v-for="contact in contacts" :key="contact"></contact>
</div>
</template>
<script>
export default {
props: ['contacts'],
}
</script>
// Contact.vue
<template>
<div>
<!-- template for each contact -->
</div>
</template>
<script>
export default {}
</script>
Hope that helps, best Alen.