Проблема в том, что вы не можете иметь повторяющийся элемент в качестве корневого шаблона.
Если вы используете версию Vue.js для разработки, вы увидите ...
[Vue warn]: Ошибка компиляции шаблона:
Невозможно использовать v-for для корневого элемента компонента с состоянием, поскольку он отображает несколько элементов.
Измените шаблон вашего компонента на
template: `<div><div v-for="post in posts" :key="post.id">...</div></div>`
Демо
Vue.component('blog-post', {
props: ['posts'],
template: `<div>
<div class="blog-post" v-for="post in posts" :key="post.id">
<h3> {{ post.title }}</h3>
<button>Enlarge text</button>
<div v-html="post.content"></div>
</div>
</div>`,
})
new Vue({
el : '#blog-post-demo',
data : {
posts : [
{id: 1, title : 'My Journey to Africa', content : 'I am the post'},
{id: 2, title : 'My Journey to America', content : 'I am the post'},
{id: 3, title : 'My Journey to Antartica', content : 'I am the post'},
{id: 4, title : 'My Journey to Asia', content : 'I am the post'},
],
}
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js"></script>
<div id="blog-post-demo">
<blog-post :posts="posts"></blog-post>
</div>