uniapp 編譯成h5,返回上一頁之後沒有觸發生命週期問題

风哀伤發表於2024-05-07

今天開發測試的時候,無意中發現點選分享連結進去登陸成功返回上一頁的時候,頁面直接空白了。

剛開始的時候,就很奇怪,畢竟分享連結這個功能是好久之前的,不可能無緣無故的出問題來著。

開始分析問題,

檢視網路請求,發現空白頁面一個請求都沒有發出,不尋常。猜測是不是哪裡打了斷點導致的。

沿著生命週期依次進行日誌輸出,企圖找出是哪個生命週期的時候出的問題,然後詭異的事情來了,不管是onload還是onshow都沒有相關的日誌輸出。

正常來說,navigateBack返回上一頁的時候,頁面是會執行一次onshow來著,但是這個就沒有。

嘗試其他方式進行跳轉然後返回上一頁,發現是可以走onshow這裡來的,只有分享連結的時候不行。猜測是不是和分享連結的邏輯有關。

排查一邊分享連結的邏輯,枯燥的翻看程式碼中。。。。

檢查了git日誌,發現分享連結的邏輯有一次改動過,將點選進來之後跳轉的動作從index頁面已到了app.vue頁面,動作提前了很多。猜測是不是這次改動引起的問題。

將程式碼還原成改動之前的,結果神奇的一幕出現了,這個問題居然就好了,返回上一頁的時候生命週期能正常執行了。

程式碼問題是解決了,但是這次發現的現象還是沒有處理,為什麼在app.vue中進行跳轉,然後返回上一頁之後會出現生命週期不執行的情況呢?

遂寫了一個簡單的demo重新復現這個問題。

兩個頁面:index和sign

app.vue程式碼

index頁面程式碼(預設首頁)

sign頁面程式碼

可以看到我在app.vue中直接跳轉到了sign頁面日誌輸出如下,是正常的生命週期輸出

然後點選返回上一頁,發現並沒有日誌輸出,但是頁面已經是index頁面的內容了

這個問題很奇怪,看起來像是頁面棧的問題,暫時沒有頭緒

相關文章