Я получаю данные от api, вместе со ссылками пагинации. На текущий момент ссылки в адресной строке меняются, но компонент не обновляется. Я так понимаю, mounted срабатывает единожды. Как правильно все сделать в данном случае? Как отслеживать изменение page и обновлять список объектов на странице?
<nav v-if="meta">
<ul class="pagination">
<template v-for="link in meta.links">
<li
:class="['page-item', { active: link.active }]"
v-if="link.url"
>
<router-link
class="page-link"
:to="modifyUrl(link.url)"
>
<span v-html="link.label"></span>
</router-link>
</li>
<li class="page-item disabled" v-else>
<span class="page-link" v-html="link.label"></span>
</li>
</template>
</ul>
</nav>
const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/admin',
component: Dashboard
}, {
path: '/admin/lyrics/inbox',
component: LyricsInbox
}
]
});
const app = new Vue({
el: '#app',
components: { App },
router
});
import axios from "axios";
export default {
data() {
return {
loading: false,
lyrics: [],
meta: null,
};
},
mounted() {
this.loadLyrics(this.$route.query.page);
},
methods: {
loadLyrics(page = 1) {
this.loading = true;
axios
.get("/api/lyrics/inbox?page=" + page)
.then((response) => {
this.lyrics = response.data.data;
this.meta = response.data.meta;
})
.catch((error) => {
console.error(error);
})
.finally(() => {
this.loading = false;
});
},
modifyUrl(url) {
return url.replace(/^http.*?\/api\//, "/admin/");
},
},
};