uniapp返回上一頁執(zhí)行上一頁方法解決方案
引言
在使用uniapp的過程中,我相信,我們都一定遇見過如下的場景:
進(jìn)入了一個列表頁,列表頁進(jìn)入詳情頁,在詳情頁進(jìn)行了一些操作,比如,刪除,修改,編輯,提交,成功之后返回到列表頁,那么這個時候,如果我們的列表頁不進(jìn)行數(shù)據(jù)的刷新,就會給用戶一種錯覺,我剛才進(jìn)行操作的那條數(shù)據(jù)會不會沒成功,我們下拉刷新下列表,這個數(shù)據(jù)就變成最新的了,這個是很常見的一個交互場景,那么如何不讓用戶進(jìn)行下拉刷新或者重新進(jìn)入列表頁的操作,我提供幾種比較常用的做法!
解決方案
uniapp.小程序監(jiān)聽左上角的返回按鈕,刷新上一個頁面的數(shù)據(jù)
方法一
需要注意的一點(diǎn)是,需要在頁面卸載的周期內(nèi),把自定義的事件off掉
B頁面 onUnload(){ uni.$emit("getlist",{})//這里可以傳個空,也可以傳值過去 uni.navigateBack({ // 返回上一頁 delta: 1 }) } A頁面 onShow(){ uni.$on("getlist", (e)=>{ this.getwrongtllist();//需要重新訪問一下接口。 }) }, // 用這種方法需要清除,負(fù)責(zé)會一直調(diào)用多次接口 onUnload() { // 清除監(jiān)聽 uni.$off('getlist'); }, // 或者有組件的使用不了小程序的生命周期可以使用 beforedestroy
方法二
B頁面 onUnload(){ var pages = getCurrentPages(); //當(dāng)前頁面棧 if (pages.length > 1) { var beforePage = pages[pages.length - 2]; //獲取上一個頁面實(shí)例對象 beforePage.data.refreshIfNeeded = true; } } A頁面 export default { data() { return { refreshIfNeeded: false, } } } onShow() { var pages = getCurrentPages(); // 獲取當(dāng)前頁面棧 var currentPage = pages[pages.length - 1]; // 當(dāng)前頁面 if (currentPage.data.refreshIfNeeded) { currentPage.data.refreshIfNeeded = false; this.mescroll.resetUpScroll(); // 調(diào)用列表重置刷新頁面 this.mescroll.scrollTo(0,0); // 滾動頁面置頂 } }
方法三
B頁面 返回 payData.success = (res) => { uni.showToast({ title: '支付成功', success: () => { setTimeout(() => { uni.navigateBack(); }, 2000) } }) } A頁面 返回的時候可以先清空數(shù)據(jù),然后再請求一次接口 onShow() { this.orderList = [] this.currentPage = 1 this.gettradelist() }
總結(jié)
- 第一種方法一定要在離開頁面的時候清除掉定義的事件否則會請求接口多次
- 第二種方法也是比較推薦的一種
- 第三種方法是前二種都不能用的情況下使用,不是很推薦使用
到此這篇關(guān)于uniapp返回上一頁執(zhí)行上一頁方法解決方案的文章就介紹到這了,更多相關(guān)uniapp返回上一頁執(zhí)行上一頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入理解JavaScript系列(41):設(shè)計模式之模板方法詳解
這篇文章主要介紹了深入理解JavaScript系列(41):設(shè)計模式之模板方法詳解,模板方法(TemplateMethod)定義了一個操作中的算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟,需要的朋友可以參考下2015-03-03深入理解JavaScript系列(48):對象創(chuàng)建模式(下篇)
這篇文章主要介紹了深入理解JavaScript系列(48):對象創(chuàng)建模式(下篇),本篇主要是介紹創(chuàng)建對象方面的模式的下篇,利用各種技巧可以極大地避免了錯誤或者可以編寫出非常精簡的代碼,需要的朋友可以參考下2015-03-03淺談javascript:兩種注釋,聲明變量,定義函數(shù)
下面小編就為大家?guī)硪黄獪\談javascript:兩種注釋,聲明變量,定義函數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09使用原生JS獲取select元素選中的value和text值
這篇文章介紹了使用原生JS獲取select元素選中的value和text值,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03