У меня есть 3 файла: App
, BlogList
, BlogItem
. Я хочу разрешить пользователю удалять post
, если он / она хочет. Я использую соединение, но по какой-то причине я получаю эту ошибку:
Свойство или метод "removePost" не определен в экземпляре, но на него ссылаются во время рендеринга. Убедитесь, что это свойство является реактивным, либо в параметре данных, либо для компонентов на основе классов, инициализируя свойство.
Вот фрагменты кода (BlogList включен в приложение и также состоит из множества BlogItems):
Приложение:
<template>
<div id="app">
<Header />
<PostList v-bind:posts="posts" />
</div>
</template>
<script>
import axios from "axios";
import Header from ...
import PostList from ...
export default {
name: "App",
components: {
Header,
PostList,
},
data() {
return {
posts: []
};
}
};
</script>
BlogList:
<template>
<div class="blog-list">
<div v-for="(post,index) in posts" v-bind:key="post.id">
<PostItem v-bind:post="[post,index]" />
</div>
</div>
</template>
<script>
import PostItem from ...
export default {
name: "PostList",
components: {
PostItem
},
props: ["posts"],
methods: {
removePost: function(index) {
this.$delete(this.posts, index);
}
}
};
</script>
BlogItem:
<template>
<div class="wrapper">
<div class="post-text">{{post.data.title}}</div>
<button class="btn-remove" @click="removePost(index)">Remove</button>
</div>
</div>
</template>
<script>
export default {
name: "PostItem",
props: ["post"]
};
</script>
Я все еще довольно новичок в Vue, и передача данных между компонентами кажется сложной задачей. Я попытался объявить эту функцию в BlogList так, как там, где я поместил свой v-for, но я не могу получить индекс клика по сообщению в блоге (и я считаю, что именно это вызывает проблемы). Я включаю только необходимые фрагменты кода и знаю, что подобный вопрос уже задавался ( Как удалить элемент из массива в Vue. js), но в моем случае Я хочу использовать 3 отдельных компонента вместо одного.