業(yè)務(wù)場(chǎng)景:進(jìn)入一個(gè)頁(yè)面后,需要發(fā)起請(qǐng)求去獲取數(shù)據(jù)。比如進(jìn)入用戶詳情頁(yè)面,頁(yè)面需要展示username,age等數(shù)據(jù),但這些數(shù)據(jù)需要發(fā)起一個(gè)請(qǐng)求去拿到。在模板中通過{{userInfo.username}}這種方式獲取。實(shí)現(xiàn)這個(gè)操作我的思路是:在對(duì)應(yīng)的組件創(chuàng)建或者掛載時(shí)觸發(fā)一個(gè)action,通過這個(gè)action發(fā)起請(qǐng)求,action拿到數(shù)據(jù)后賦值進(jìn)state,在組件中可以通過getter拿到state中對(duì)應(yīng)的數(shù)據(jù).通過上述方法實(shí)現(xiàn)會(huì)遇到一個(gè)問題:運(yùn)行時(shí)會(huì)報(bào)出這樣的錯(cuò)誤:[Vue warn]: Error when rendering component <app-header>:
Uncaught TypeError: Cannot read property 'username' of null我理解錯(cuò)誤原因是:組件在請(qǐng)求還沒有拿到數(shù)據(jù)的時(shí)候就會(huì)渲染,當(dāng)渲染{{userInfo.username}}時(shí),其實(shí)userInfo還是null.所以現(xiàn)在就產(chǎn)生了幾個(gè)問題:1.項(xiàng)目中使用Vuex,是不是組件中需要的數(shù)據(jù)都需要通過getter從state中獲取,包括一些通過請(qǐng)求拿到的數(shù)據(jù)?2.如果上述是正確的話,那么遇見例子中報(bào)錯(cuò)的情況應(yīng)該怎么處理?3.如果不正確,那么對(duì)于這種 組件渲染時(shí)需要的數(shù)據(jù)還沒拿到 情況要怎么處理?
2 回答

12345678_0001
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
既然使用了Vuex,最好還是通過getter去獲取比較好。
對(duì)于例子中的報(bào)錯(cuò),我認(rèn)為可以在組件初始化時(shí),給userInfo一個(gè)非空賦值(比如{})。這樣就不會(huì)導(dǎo)致頁(yè)面報(bào)錯(cuò)。
添加回答
舉報(bào)
0/150
提交
取消