Я использую аутентификацию Vuex и Firebase. Я застрял при перезагрузке страницы. firebase.auth (). onAuthStateChanged требуется время для ответа. Но мне нужно в то же время, когда перезагрузить страницу. Я видел много уроков в inte rnet, большинство из них - защита роутера, но я этого не хочу. У меня есть какой-то маршрут, в котором у пользователя есть логин, и я могу перейти к этому маршруту.
Приложение. vue, куда я подаю заявку.
created () {
firebase.auth().onAuthStateChanged(async user =>{
if (user){
await this.$store.dispatch('autoSignIn',user)
}
})
}
Вот мой триггер vuex action theat, когда перезагрузка страницы для автоматического входа в систему, если пользователь вошел в систему до перезагрузки страницы.
autoSignIn ({commit}, payload) {
commit('setUser',{email:payload.email, userId:payload.uid})
}
Это мой получатель
isAuthenticated:state => {
return state.user !== null && state.user !== undefined ? state.user : null
}
Здесь я вызываю мой получатель isAuthenticated.
getEventsByUser({getters,commit}){
let data = [];
firebase.database().ref('usuario/' + getters.isAuthenticated.userId + '/eventos/')
.on("value", eventos =>{
eventos.forEach(evento =>{
data.push({"id":evento.key, ...evento.val()})
});
commit('setEventsByUser',data)
})
},
И это компонент, который отправляет действие
<template>
<div>
<div v-for="(event,id) in getEventsByUser" :key="id">
{{event}}
</div>
</div>
</template>
<script>
export default {
name: "MyEvents",
computed:{
getEventsByUser(){
return this.$store.getters.getEventsByUser;
},
},
mounted() {
this.$store.dispatch('getEventsByUser')
},
}
Вот ошибка, когда я перезагружаю страницу