移動(dòng)端我們經(jīng)常要在新頁面添加或者編輯數(shù)據(jù),添加后返回上一頁,但是數(shù)據(jù)沒有刷新,下面問題解決方案。
一、常見問題原因及解決
1. 數(shù)據(jù)未用響應(yīng)式變量聲明
問題:如果刷新的數(shù)據(jù)沒有用 ref 或 reactive 聲明,修改后不會(huì)觸發(fā)視圖更新。
解決:確保數(shù)據(jù)是響應(yīng)式的。
2. 接口調(diào)用未正確處理異步邏輯
問題:接口請(qǐng)求是異步的,如果未等待結(jié)果返回就結(jié)束函數(shù),可能導(dǎo)致數(shù)據(jù)未更新。
解決:用 async/await 確保接口請(qǐng)求完成后再更新數(shù)據(jù)
3. onShow
觸發(fā)時(shí)機(jī)與頁面狀態(tài)沖突
問題:如果頁面未完全初始化(如首次加載時(shí)),onShow 可能早于某些初始化邏輯執(zhí)行。
解決:添加延遲或確保初始化完成后再刷新。
4. 接口返回?cái)?shù)據(jù)結(jié)構(gòu)錯(cuò)誤
問題:接口返回?cái)?shù)據(jù)格式與預(yù)期不符(如嵌套層級(jí)錯(cuò)誤),導(dǎo)致數(shù)據(jù)未正確賦值。
解決:打印接口返回結(jié)果,檢查數(shù)據(jù)結(jié)構(gòu)。
5. 頁面棧或路由跳轉(zhuǎn)問題
問題:如果通過 navigateTo 之外的方式跳轉(zhuǎn)(如 redirectTo),可能導(dǎo)致 onShow 不觸發(fā)。
解決:確保跳轉(zhuǎn)方式正確,navigateTo 會(huì)保留當(dāng)前頁面,返回時(shí)觸發(fā)上一頁 onShow。
三、總結(jié)排查步驟
- 檢查數(shù)據(jù)是否用
ref
/reactive
聲明(確保響應(yīng)式)。 - 確認(rèn)接口請(qǐng)求成功并返回正確格式的數(shù)據(jù)。
- 驗(yàn)證
onShow
是否被觸發(fā)(添加日志)。 - 檢查跳轉(zhuǎn)方式是否為
navigateTo
(確保返回時(shí)觸發(fā)上一頁onShow
)。 - 用
setTimeout
排除時(shí)機(jī)沖突問題。