ibeautiful
2023-07-06 14:48:51
我的 vue js 網(wǎng)站上的數(shù)據(jù)正在渲染,但我在控制臺(tái)中收到未定義的錯(cuò)誤。我正在 App.vue 中進(jìn)行 axios 調(diào)用,以從我的 cms 獲取數(shù)據(jù):應(yīng)用程序.vueasync created() {const strapiData = await getStrapiData();// Update Vuexthis.$store.dispatch('setStrapi', strapiData);}然后在我的組件之一中,我調(diào)用 getter 來(lái)檢索存儲(chǔ)在 vuex 中的數(shù)據(jù):關(guān)于.vuecomputed: { aboutData() { return this.$store.getters.strapiData.data.about }}然后我在模板代碼中引用它:<img :src="aboutData.photo.name">一切都渲染得很好,但這是我在網(wǎng)絡(luò)控制臺(tái)中看到的錯(cuò)誤:TypeError: Cannot read property 'photo' of undefinedat a.r (About.vue?3e5e:1)我認(rèn)為這個(gè)問(wèn)題與我的組件的創(chuàng)建順序有關(guān)。我將所有子組件導(dǎo)入到 App.vue 中并在那里渲染它們,但我認(rèn)為子組件是在 app.vue 創(chuàng)建的生命周期掛鉤之前創(chuàng)建的:應(yīng)用程序.vue腳本components: {'app-about' : About,App.vue模板<template> <div id="app"> <app-about></app-about> </div></template>有人知道我缺少什么嗎?謝謝你!
1 回答

寶慕林4294392
TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
當(dāng)?shù)谝淮蝿?chuàng)建組件時(shí),axios 調(diào)用尚未解析,因此aboutData
未定義。一旦調(diào)用被解析,aboutData 就會(huì)被渲染。使其未定義和渲染是兩個(gè)后續(xù)事件。使用 v-if 消除了第一個(gè)事件,因?yàn)?code>aboutData在創(chuàng)建組件時(shí)不會(huì)調(diào)用第一個(gè)事件,而是僅在 axios 調(diào)用已解決且aboutData
可用時(shí)調(diào)用。
您通常所做的是將一個(gè)屬性設(shè)置loading
為默認(rèn)值 false。然后,當(dāng)axios調(diào)用開(kāi)始時(shí),將loading設(shè)置為true,并在resolved時(shí)將其設(shè)置為false。在您的模板中,您設(shè)置了一些“加載消息”來(lái)顯示 whileloading
為 true。
添加回答
舉報(bào)
0/150
提交
取消