前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序在“页面B”更改title,返回“页面A”仍会显示“页面B”的title

小程序在“页面B”更改title,返回“页面A”仍会显示“页面B”的title

作者头像
神葳
发布2021-01-22 16:03:59
1.4K0
发布2021-01-22 16:03:59
举报
文章被收录于专栏:神葳总局神葳总局

最近在做小程序的时候遇到这么一个有趣的问题,就是从A页面跳转到B页面,如果B页面需要在接口加载之后更改title, 并且如果接口请求过慢,还灭有请求完毕时就点击返回按钮回到A页面,这时B页面的请求会继续执行,并在执行完毕后修改了A页面的title。

# 原因

个人猜想,小程序本身属于单页面应用,代码的运行权限没有处理好,就像上面这种情况,B页面的代码穿越到了A页面的环境里面,并且执行。

# 解决

  1. 既然B页面的请求方法可以在A页面执行,那么在B页面的方法中获取的当前的页面路由时就有可能可以获取到A页面的路由,经过测试果然不出所料。
  2. 所以,可以这样来解决这个问题:在B页面的onLoad中获取当前页面路径,应该是/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();
  },
  // 获取数据
  getData () {
    getDataForB().then(() => {
      // 获取数据后判断router是否一致
      if (this.currentRouter == getCurrentRouter()) {
        wx.setNavigationBarTitle({
            title: '要修改的title'
        })
      }
    })
  }
})

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

复制

作者个人博客:午后南杂

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-7-21 2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 原因
  • # 解决
  • # 代码
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档