У меня одностраничное приложение, требующее аутентификации. Когда пользователь был аутентифицирован, затем зайдите на некоторые страницы или нажмите кнопку перезагрузки в браузере, он попросит api предоставить свои данные аутентификации. то у меня есть ошибка, как это:Vuejs синхронно запрашивает данные рендера
[Vue warn]: Error when evaluating expression "auth.name": TypeError: Cannot read property 'name' of null (found in component: <navbar>)
Эта ошибка вызвана тем, что вю визуализации аутентификации данных в то время как запрос API еще не закончена.
Можно сделать vue ждать запроса api до окончания первого, прежде чем vue render auth data?
как раз более четко что происходит здесь. Вот код:
// main.js
import Vue from 'vue'
import App from './App.vue' // root vue
import store from './vuex/store' // vuex
import router from './router' // my router map
sync(store, router)
router.start(App, '#app')
// end main.js
// App.vue
<template>
<main>
<div class="wrapper">
<router-view></router-view>
</div>
</main>
</template>
<script>
import authService from './services/auth' // import authservice
ready() {
// here is code that should be done first before vue render all authData
auth.getUser((response) => {
self.authData = response
})
},
data() {
return {
authData: null // default is null until the api finish the process
}
}
</script>
// end App.vue
// SomeRouterComponents.vue
<template>
<!-- some content -->
<div>
// always got error: cannot read property 'name' of null
// here I expect to render this after api has been resolved
{{ $root.authData.name }}
</div>
<!-- some content -->
</template>
Вы должны опубликовать свой код. Я не думаю, что нужно синхронно идти –
@YerkoPalma Я использую vue-router и vuex. в настоящее время я помещаю код (для запроса api) в App.vue в ready() – antoniputra
@YerkoPalma. Мой код похож на общий проект приложения с одной страницей, пока я не встречу эту проблему. – antoniputra