小程序模板網(wǎng)

如何跳出小程序五級頁面的限制

發(fā)布時(shí)間:2018-04-25 10:23 所屬欄目:小程序開發(fā)教程

				

前言:做小程序開發(fā),就要在微信的規(guī)則內(nèi)玩耍。最近做的小程序經(jīng)常會有個報(bào)錯:RangeError: Maximum call stack size exceeded。這意思是說小程序頁面超過5級跳轉(zhuǎn)了,應(yīng)該怎么解決呢?

微信小程序官方文檔中,關(guān)于頁面的跳轉(zhuǎn),有三個API,兩個跳轉(zhuǎn)新頁面的 API 分別為wx.navigateTo和wx.redirectTo,還有一個 API 名為wx.navigateBack,它用于返回上級頁面。

wx.navigateBack在小程序的初始版本中只能回到上一個頁面,在最新版本(0.10.102800)的更新中給navigateBack添加了一個參數(shù)delta,用于決定需要返回幾層頁面。

navigator組件的默認(rèn)跳轉(zhuǎn)方式與wx.navigateTo相同,而如果添加redirect屬性,則與wx.redirectTo的跳轉(zhuǎn)方式相同。

wx.navigateTo在官方文檔中描述如下:

保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面,使用wx.navigateBack可以返回到原頁面。

通過navigateTo跳轉(zhuǎn)后,可點(diǎn)擊左上角的按鈕返回上一個頁面。而如果多次調(diào)用navigateTo之后,就需要返回多次才能回到初始頁面,這種交互更像是客戶端打開一個新的view。因此,官方在此處有一個限制(最多五級)。

注意:為了不讓用戶在使用小程序時(shí)造成困擾,我們規(guī)定頁面路徑只能是五層,請盡量避免多層級的交互方式。

不過上述五層的限制只是針對navigateTo,redirectTo則無此限制。因?yàn)閞edirectTo的行為是:

關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。

因此,當(dāng)頁面?zhèn)€數(shù)超過五層時(shí),應(yīng)該用redirectTo來替換navigateTo,就可以避免Maximum call stack size exceeded的異常,但是redirectTo關(guān)閉當(dāng)前頁面的做法,有些場景并不適用,比如,從列表頁進(jìn)詳情頁面,如果進(jìn)入詳情頁面時(shí),關(guān)閉列表頁面,再次back時(shí),就沒辦法回到列表頁面。

通過redirectTo跳轉(zhuǎn)后,只是無法返回跳轉(zhuǎn)前的頁面,但并不是無法調(diào)用navigateBack,而是調(diào)用之后,會回到使用redirectTo跳轉(zhuǎn)前的上一個頁面。

頁面棧可以通過getCurrentPages方法獲?。?/p>

getCurrentPages()函數(shù)用于獲取當(dāng)前頁面棧的實(shí)例,以數(shù)組形式按棧的順序給出,第一個元素為首頁,最后一個元素為當(dāng)前頁面。

這個方法也比較適用,在多層頁面跳轉(zhuǎn)中,你可能會用的到。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://22321a.com/wxmini/doc/course/24021.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢