欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

微信小程序如何實現(xiàn)全局重新加載

背景:

湖濱網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,湖濱網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為湖濱上1000家提供企業(yè)網(wǎng)站建設(shè)服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的湖濱做網(wǎng)站的公司定做!

隨著業(yè)務的增加,我們服務器需要計算大量的用戶數(shù)據(jù),導致用戶跟客服反應頁面不能正常展示。反饋給開發(fā)后,我們一看,是服務器異常的錯誤。So,產(chǎn)品想看下我們到底有多少用戶頁面不能正常展示?

方案:

  1. 后端人員直接在阿里云后臺去查哪些接口異常
  2. 前端做一個服務器報錯頁,這樣產(chǎn)品在小程序后臺能看到這個頁面的PV,UV

技術(shù)方案

因為業(yè)務龐大,所以我們不可能區(qū)在每個頁面加上重新加載的邏輯。所以初步考慮使用全局重新加載。

需要解決的問題都有哪些?

  1. 首先我們要有網(wǎng)絡(luò)請求失敗的全局控制權(quán)(要不然就需要在每個頁面處理失敗的情況)
  2. 需要定義好網(wǎng)絡(luò)失敗后是如何跳轉(zhuǎn)到重載頁(R)的(用wx.redirectTo,wx.reLaunch還是其他)
  3. 點擊錯誤頁的“重新加載”,如何返回或跳轉(zhuǎn)到出錯頁(E)(用wx.redirectTo,wx.reLaunch還是其他)
  4. 跳轉(zhuǎn)到出錯頁后,如何重新加載數(shù)據(jù)(把所有請求都放在Page.onShow()里面?)
  5. 那如果從出錯頁的上個界面(P)傳到出錯頁(E)options,那重載頁(R)又將如何處理?
  6. 點擊重新加載跟返回,我們希望效果效果一樣,又該如何操作?

實踐的方式如下

第一個問題: 比較好解決,我們基于wx.request已經(jīng)封裝了為fetch(如果還在用wx.request的項目可以考慮封裝下,好處多多)?;趂etch我們可以用res.statusCode來判斷服務器是否出錯。

第二個問題: 暫且先不說具體的跳轉(zhuǎn)方式是怎樣的,就跳轉(zhuǎn)的url這個怎么定義也需要我們來討論下。為什么這么說,因為我們的架構(gòu)涉及到了分包。分包加載意味著我們的代碼不僅僅是在pages下面,還放在了package下。

基于此,我們在跳轉(zhuǎn)的時候,url能直接寫成'../serverError/serverError'嗎?在主包下面可以正常跳轉(zhuǎn),但是在分包下,路徑是'package/serverError/serverError',這樣跳肯定不行。url應該是根目錄下的路徑,所以'/pages/serverError/serverError'。

路徑確認后,我們可以跳轉(zhuǎn)了。如果是wx.redirectTo(關(guān)閉當前頁面,跳轉(zhuǎn)到應用內(nèi)的某個頁面),想象下關(guān)閉E跳轉(zhuǎn)到R,點擊重新加載,再關(guān)閉R跳轉(zhuǎn)到E,這么跳轉(zhuǎn)路徑復雜,用戶體驗不好,并且options的參數(shù)需要逐級傳遞。wx.reLaunch類似。我們用所以我們選擇wx.navigateTo。

第三個問題: 綜合問題二的解釋,跳回到E,我們用wx.navigateBack。

第四個問題: 如果從R用wx.navigateBack回到E的話,肯定會觸發(fā)E.onShow()方法。但是有些請求我們除了寫在Page.onShow()里,還有些是寫在Page.onLoad()里的,所以我們必須想辦法調(diào)起E.onLoad()。

大家對于getCurrentPages()這個方法肯定不陌生,官方定義是來獲取當前頁面棧,我們一般用它來獲取當前頁面路徑。其實在這個過程中,我們是能拿到當前頁面的實例的,并且實例里面有route(頁面路徑)options(頁面?zhèn)鬟f參數(shù))data(頁面初始參數(shù))以及各種function()等等。

利用previousPageClass()我們可以拿到E的實例,也就可以拿到E.options,當然我們也可以調(diào)E.onLoad()。

util.js

// 獲取當前路徑
function currentPagePath() {
 let pageData = getCurrentPages()
 if (pageData.length >= 1) {
 let len = pageData.length - 1
 let data = pageData[len]
 return data.route
 } else {
 return ''
 }
}

// 獲取上個界面的實例
function previousPageClass() {
 let pageData = getCurrentPages()
 if (pageData.length >= 2) {
 let len = pageData.length - 2
 let preClass = pageData[len]
 return preClass
 } else {
 return ''
 }
}

module.exports = {
 currentPagePath,
 previousPageClass
}

第五個問題: 基于問題的四的方案,我們可以調(diào)E.onLoad(E.options)來將我們的參數(shù)回傳回去。

第六個問題: 點擊返回,相當于頁面卸載,也就是執(zhí)行了R.onUnload(),這個時候我們只需要執(zhí)行E.onLoad(E.options)這個方法,把options傳過去,以及調(diào)用起E.onLoad()就OK了。

但是點擊重新加載,我們是調(diào)的wx.navigateBack(),這個方法也會走R.onUnload()。這是時候可能有些苦惱了,我們隱藏掉返回按鈕?發(fā)現(xiàn)官方并沒有提供此方法。禁用R.onUnload(),好像也不行。因為R.onUnload()是在點擊重新加載后才執(zhí)行的,所以我們可以記錄下用戶是否點擊了重新加載的行為。然后我們通過記錄的行為,即便用戶點擊了重新加載,然后觸發(fā)了R.onUnload(),我們不去執(zhí)行E.onLoad(E.options)就OK了。

// pages/serverError/serverError.js

import { previousPageClass } from '../../utils/util.js'

let isClickReload = false

Page({

 onLoad: function (options) {
 isClickReload = false
 },
 onUnload: function () {
 if(!isClickReload) {
  this.callbackParams()
 } 
 },
 /**
 * 點擊事件
 */
 clickReload: function (e) {
 isClickReload = true
 wx.navigateBack()
 this.callbackParams()
 },
 // 點擊返回,參數(shù)回傳
 callbackParams: function () {
 let preOptions = previousPageClass().options
 previousPageClass().onLoad(preOptions)
 }
})

至此所有問題,基本都已解決。

Demo代碼附上,歡迎參考。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對創(chuàng)新互聯(lián)的支持。

文章標題:微信小程序如何實現(xiàn)全局重新加載
網(wǎng)頁地址:http://aaarwkj.com/article38/jeihpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、建站公司移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、網(wǎng)站維護網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
91免费在线观看国产精品| 久久精品国产亚洲av不卡| 国内精品免费视频不卡| 熟妇丰满多毛的大阴户| 成人做爰片免费看视频| 亚洲欧美日韩综合精品久久| 高清一区高清二区高清三区| 中文字幕日本人妻影视| 韩国电视剧大全免费国语观看| 亚洲国产精品中文字幕一区久久| 午夜少妇诱惑一区二区三区| 国产三级传媒在线观看| 亚洲精品乱码国产妇女毛片| 香婷婷一区二区精品久久| 亚洲一区二区三区国色天香| 91狠狠综合久久精品| 懂色av中文字幕一区| 午夜影院在线免费观看三区| 欧美 日韩亚洲一区| 国产一区二区三区免费有码视频| 亚洲青青草原自拍偷拍| 海外成人永久免费视频| 欧美日韩国产另类久久| 爽妇网亚洲一区二区三区| 五月激情开心久久婷婷| av基地蜜桃蜜桃蜜桃| 激情久久五月激情婷婷| 成人黄色小视频下载| 森泽佳奈在线视频观看| 麻豆精品情欲人妻二区| 亚洲清纯唯美激情四射| 国产91一区二区三区在线精品 | 欧美一区二区三区日| 成人欧美黑人一区二区| 日韩电影网国产精品| 亚洲综合av伊人久久| 欧美亚洲一区二区三区91| 五月天亚洲激情综合av| 免费看男人添女人无遮挡| 欧美一区二区三区久久妇| 日本国产精品免费在线观看|