今天開發測試的時候,無意中發現點選分享連結進去登陸成功返回上一頁的時候,頁面直接空白了。
剛開始的時候,就很奇怪,畢竟分享連結這個功能是好久之前的,不可能無緣無故的出問題來著。
開始分析問題,
檢視網路請求,發現空白頁面一個請求都沒有發出,不尋常。猜測是不是哪裡打了斷點導致的。
沿著生命週期依次進行日誌輸出,企圖找出是哪個生命週期的時候出的問題,然後詭異的事情來了,不管是onload還是onshow都沒有相關的日誌輸出。
正常來說,navigateBack返回上一頁的時候,頁面是會執行一次onshow來著,但是這個就沒有。
嘗試其他方式進行跳轉然後返回上一頁,發現是可以走onshow這裡來的,只有分享連結的時候不行。猜測是不是和分享連結的邏輯有關。
排查一邊分享連結的邏輯,枯燥的翻看程式碼中。。。。
檢查了git日誌,發現分享連結的邏輯有一次改動過,將點選進來之後跳轉的動作從index頁面已到了app.vue頁面,動作提前了很多。猜測是不是這次改動引起的問題。
將程式碼還原成改動之前的,結果神奇的一幕出現了,這個問題居然就好了,返回上一頁的時候生命週期能正常執行了。
程式碼問題是解決了,但是這次發現的現象還是沒有處理,為什麼在app.vue中進行跳轉,然後返回上一頁之後會出現生命週期不執行的情況呢?
遂寫了一個簡單的demo重新復現這個問題。
兩個頁面:index和sign
app.vue程式碼
index頁面程式碼(預設首頁)
sign頁面程式碼
可以看到我在app.vue中直接跳轉到了sign頁面日誌輸出如下,是正常的生命週期輸出
然後點選返回上一頁,發現並沒有日誌輸出,但是頁面已經是index頁面的內容了
這個問題很奇怪,看起來像是頁面棧的問題,暫時沒有頭緒