Я сейчас создаю блог и пытаюсь реализовать кнопку «Загрузить больше», но я немного застрял. Вот что я получил:
У меня есть список сообщений из REST API, которые я вызываю в моем магазине Vuex:
actions: {
LOAD_ARTICLE_LIST: function ({ commit }) {
axios.get('someurl/articles').then((response) => {
commit('SET_ARTICLE_LIST', { list: response.data.data })
}, (err) => {
console.log(err)
})
}
}
mutations: {
SET_ARTICLE_LIST: (state, {list}) => {
state.articles = list
}
}
Упрощенный компонент статьи:
<div v-for="article in articles">
<div> {{ article.title }}</div>
<div> {{ article.description }}</div>
<div> {{ article.date }}</div>
</div>
<div v-if="articles.length > 4" @click="loadMore">
<div>More articles</div>
</div>
computed: {
articles() {
function compare(a, b) { //sort articles by date
if (a.date > b.date)
return -1;
if (a.date < b.date)
return 1;
return 0;
}
let articleList = this.$store.state.articles.sort(compare);
articleList.splice(0,5);
return articleList
}
}
mounted: function () {
this.$store.dispatch('LOAD_ARTICLE_LIST')
}
Я знаю, что мне нужно использовать метод, вызывающий loadMore (), и я думаю, что мне нужно добавить в него новые статьи, но я не знаю, как это сделать. Если бы кто-то мог мне помочь, это было бы так здорово!
Спасибо, что прочитали
Примечание: если я добавлю какие-либо статьи этим методом, будут ли они отсортированы по дате со всем списком или только с новыми статьями, которые я нажал?