【小程序】當前“頁面B”動態(tài)更改title,點擊返回按鈕,更改的標題會顯示在“來源頁面A”

最近在做小程序的時候遇到這么一個有趣的問題,就是從A頁面跳轉(zhuǎn)到B頁面,如果B頁面需要在接口加載之后更改title,
并且如果接口請求過慢,還滅有請求完畢時就點擊返回按鈕回到A頁面,這時B頁面的請求會繼續(xù)執(zhí)行,并在執(zhí)行完畢后修改了A頁面的title。

原因

個人猜想,小程序本身屬于單頁面應(yīng)用,代碼的運行權(quán)限沒有處理好,就像上面這種情況,B頁面的代碼穿越到了A頁面的環(huán)境里面,并且執(zhí)行。

解決

  1. 既然B頁面的請求方法可以在A頁面執(zhí)行,那么在B頁面的方法中獲取的當前的頁面路由時就有可能可以獲取到A頁面的路由,經(jīng)過測試果然不出所料。
  2. 所以,可以這樣來解決這個問題:在B頁面的onLoad中獲取當前頁面路徑,應(yīng)該是/b,然后在方法中再次獲取當前路徑,可能是/b,也可能是/a
    若是/a,則是上面提到問題情況,這個時候就不用取改變title了,若是/b,則可以更改。

代碼

// utils.js
const getCurrentRouter = function () {
  let arr = getCurrentPages(),
      len = arr.length;
  return arr[len - 1].route;
}

export {getCurrentRouter};


// b.js
import {getCurrentRouter};
import { getDataForB } from '../../../servies/services.js';

Page({
  onLoad (options) {
    this.currentRouter = getCurrentRouter();
  },
  // 獲取數(shù)據(jù)
  getData () {
    getDataForB().then(() => {
      // 獲取數(shù)據(jù)后判斷router是否一致
      if (this.currentRouter == getCurrentRouter()) {
        wx.setNavigationBarTitle({
            title: '要修改的title'
        })
      }
    })
  }
})

個人博客:午后南雜

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容