第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue一進入頁面或者刷新頁面調(diào)接口得到數(shù)據(jù),但是卻沒有在頁面上顯示出來這是為什么呢?

vue一進入頁面或者刷新頁面調(diào)接口得到數(shù)據(jù),但是卻沒有在頁面上顯示出來這是為什么呢?

慕虎7371278 2019-05-23 19:51:17
情景:一進入首頁就會調(diào)后臺接口去數(shù)據(jù)庫里查詢有沒有數(shù)據(jù),如果有得到數(shù)據(jù)就把它顯示在首頁上。接口無報錯,且數(shù)據(jù)能打印出來,但是首頁就是沒有展示數(shù)據(jù),無論怎么刷新都不行,進入其他頁面在返回時發(fā)現(xiàn)有數(shù)據(jù)了。懷疑與生命周期有關。一開始在首頁的data()里面是這樣定義username屬性的:username:this.$store.state.user.username===''?'游客':this.$store.state.user.username然后在mounted()里面diapatchstore里面的actions,在actions里面調(diào)接口并得到返回值,然后在mutations里改變state里面對應屬性的值。但是值改變了,頁面上的數(shù)據(jù)卻沒變。問題就在這里。無論怎么刷新都不管用!后來打開之前考下來的其他項目參考,發(fā)現(xiàn)它們在頁面上的data()里面初始化的屬性基本上都是沒有值的。然后我便仿著來,同時在mounted()方法里加上了this.username=this.$store.state.user.username結(jié)果仍然沒有。然后放棄了在actions里面調(diào)后臺接口的想法,照著之前那位高仿餓了么的大神的寫法在頁面上直接調(diào)后臺接口:getUserInfo(this.$store.state.user.userid).then(res=>{console.log(res)if(res.data.success){this.$store.state.user.username=res.data.data.usernamethis.$store.state.user.phone=res.data.data.phonethis.username=this.$store.state.user.username}})搞定了。至于原理我就有點不大了解了,只能來社區(qū)問了。一開始想著是不是生命周期的原因,但是我代碼寫在mounted()里面難道不比data()快?
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻1871條經(jīng)驗 獲得超13個贊

1.首先你原來的方法是在mutations里改了state的值,沒有改store里的值,但是你在mounted里取的確是store里的值,兩個是不同步的2.data()是在mounted之前執(zhí)行的
                            
查看完整回答
反對 回復 2019-05-23
?
眼眸繁星

TA貢獻1873條經(jīng)驗 獲得超9個贊

首先username應該寫在計算屬性里,這樣當state改變的時候username才是響應式的,原理我的理解是通過getter和setter函數(shù)實現(xiàn)的,寫在data里面的話,mounted觸發(fā)的時候才去調(diào)用ajax取數(shù)據(jù),此時state的值還沒有改變,取得自然是調(diào)用接口之前的默認值。還有,username:this.$store.state.user.username||'游客'可以這樣子寫,不過為什么不把store里的username寫成'游客'呢
                            
查看完整回答
反對 回復 2019-05-23
  • 2 回答
  • 0 關注
  • 6821 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號