Я разрабатываю систему входа / регистрации в моем приложении Vue.js.Я хочу, чтобы элементы в панели навигации обновлялись при вызове this.$router.push('/')
.
App.vue:
<template>
<div id="app">
<Navbar></Navbar>
<router-view></router-view>
<Footer></Footer>
</div>
</template>
Компонент Navbar:
export default {
name: "Navbar",
data: function() {
return {
isLoggedIn: false,
currentUser: null
}
},
methods: {
getAuthInfo: function() {
this.isLoggedIn = this.auth.isLoggedIn();
if (this.isLoggedIn) {
this.currentUser = this.auth.currentUser();
}
}
},
mounted: function() {
this.getAuthInfo();
},
updated: function() {
this.getAuthInfo();
}
}
Вот какЯ перенаправляю на другую страницу:
const self = this;
this.axios
.post('/login', formData)
.then(function(data) {
self.auth.saveToken(data.data.token);
self.$router.push('/');
})
.catch(function(error) {
console.log(error);
self.errorMessage = 'Error!';
});
РЕЗЮМЕ: Проблема в том, что isLoggedIn
и currentUser
в Navbar не обновляются, когда я звоню self.$router.push('/');
.Это означает, что функции mounted
и updated
не вызываются.Они обновляются только после того, как я вручную обновляю страницу.