前言
眾所周知,無(wú)論是在小程序還是APP中,打開一個(gè)頁(yè)面其實(shí)就是創(chuàng)建了一個(gè)新的View對(duì)象,一層層疊加的。當(dāng)點(diǎn)擊頁(yè)面的回退按鈕就是把當(dāng)前頁(yè)面關(guān)閉。
這個(gè)過程中會(huì)涉及到一個(gè)問題,就是打開頁(yè)面的數(shù)量。在某些設(shè)計(jì)下,比如一個(gè)商品詳情頁(yè)面中會(huì)推薦其他的商品,這些商品點(diǎn)進(jìn)去就是詳情頁(yè)面。詳情頁(yè)面中又有推薦,又可以點(diǎn)進(jìn)去。這樣重復(fù)下去打開的頁(yè)面就會(huì)越來(lái)越多。
如果不做限制,當(dāng)打開數(shù)量到一定程度的時(shí)候肯定會(huì)卡死了。在微信小程序中打開的頁(yè)面不能超過10個(gè),達(dá)到10個(gè)頁(yè)面后,就不能再打開新的頁(yè)面。
之前出現(xiàn)這個(gè)問題,還以為是Bug,是不是卡死了,后來(lái)發(fā)現(xiàn)只要回退一個(gè)頁(yè)面又可以重新打開了。才發(fā)現(xiàn)了最大10個(gè)頁(yè)面的限制。
特意調(diào)研了其他公司的小程序,發(fā)現(xiàn)確實(shí)有這個(gè)問題。我這邊就做了一個(gè)提示告訴用戶不能打開這么多頁(yè)面,不然用戶會(huì)一臉茫然,點(diǎn)著點(diǎn)著就點(diǎn)不了。
每個(gè)頁(yè)面都會(huì)需要跟后臺(tái)交互加載數(shù)據(jù),我這邊在統(tǒng)一的Http請(qǐng)求中進(jìn)行判斷。
實(shí)例代碼
var pages = getCurrentPages(); console.log("pages:" + pages.length); if (pages.length == 10) { wx.showToast({ title: "頁(yè)面打開太多,請(qǐng)回退關(guān)閉幾個(gè)頁(yè)面", icon: 'none', duration: 2000 }) setTimeout(() => { wx.navigateBack({ }) }, 2000) return; }當(dāng)打開第10個(gè)頁(yè)面的時(shí)候,給出提示,然后跳回上一個(gè)頁(yè)面。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)VEVB武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選