это из-за вашей функции загрузки,
load () {
this.loading = true
setTimeout(() => {
this.count += this.perPage // add 8 more to page
this.loading = false
}, 1000)
},
вы установили тайм-аут на 1000 мс, который вызывается после того, как каждый счетчик прокрутки обновляется первым вызовом выборки, а затем во второй раз обновляется по истечении времени ожидания обратного вызова функции загрузки, вместо того, чтобы сделать this.loading = false через 1000 мс, вы должны сделать его ложным при успешном вызове fetch, и то же самое применимо для обновления this.count, надеюсь, это поможет вам.
РЕДАКТИРОВАТЬ:
ваша функция загрузки должна быть похожа на
load () {
this.loading = true
this.getProducts();//previously you getproduct is called once only after mounted,you you need to call it each time whenever load is called
},
, а функция выборки должна быть похожа на
getProducts: function(){
axios.get('/api/products').then(response => {
this.products = response.data.data;
this.count += this.perPage // add 8 more to page
this.loading = false
this.perPage = response.data.meta.per_page; // set perPage to 8 (backend based)
this.total = response.data.meta.total; // my testing data are 15 so it sets total to 15 (backend based)
}).catch((err) => console.error(err));
}
другое вы можете попробовать это, использовать getProducts вместо load и удалить функцию load, сделайте this.loading = true в вашей функции getProducts, ранее ваш getProducts вызывался только один раз, когда компонент монтируется. Вам нужно вызывать функцию getProducts каждый раз, когда загружается больше просьба.