前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序如何返回到上一个页面,并刷新页面呢?

微信小程序如何返回到上一个页面,并刷新页面呢?

作者头像
Javanx
发布2019-09-04 11:21:13
28.1K1
发布2019-09-04 11:21:13
举报
文章被收录于专栏:web秀web秀

前言

小程序如何返回到上一个页面,并刷新页面呢?这样的需求很常见,比如: 订单详情页面,订单状态是“已付款”,这时候发起“退款”,跳转到申请退款页面,申请成功后,返回到订单详情,这时候的订单状态 是不是要变为“退款中”的状态?

微信小程序如何返回到上一个页面,并刷新页面呢?
微信小程序如何返回到上一个页面,并刷新页面呢?

在普通的html页面,很简单,不用操作都可以实现。因为浏览器返回会自动刷新。 但是小程序返回是不会自动刷新上一个页面的。所以需要一点点技巧。

下面还是模拟上面的场景。

申请退款页

发起申请退款后,我们用wx.navigateBack()返回到订单详情页面,小程序API有详情说明。

关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。 参数说明:

微信小程序如何返回到上一个页面,并刷新页面呢?
微信小程序如何返回到上一个页面,并刷新页面呢?

订单详情页

重点来了,抛开上面的需求,我们就查询订单详情接口

代码语言:javascript
复制
onLoad(options){
  let orderId = options.orderId;
  // 根据orderId查询订单详情数据
  wx.request({
    url: 'xxxxxx', // 接口地址
    data: {
      orderId: orderId
    },
    header: {
      'content-type': 'application/json' // 默认值
    },
    success(res) {
      console.log(res.data)
    }
  })
}

如果就这样,那页面返回并不执行onLoad函数,所以就不会获取新的数据,来更新状态。

我们找到了onShow函数(生命周期回调 — 用于监听页面显示)Page(Object) 构造器详细说明

返回时,onShow是会执行的,所以改造上面方法

代码语言:javascript
复制
data: {
  orderId: ''
},
onShow() {
  // 获取data里面存的orderId
  let orderId = this.data.orderId;
  wx.request({
    url: 'xxxxxx', // 接口地址
    data: {
      orderId: orderId
    },
    header: {
      'content-type': 'application/json' // 默认值
    },
    success(res) {
      console.log(res.data)
    }
  })
},
onLoad(options){
  let orderId = options.orderId;
  // 向data里面set orderId
  this.setData({
    orderId: orderId
  })
}

onLoad把参数存起来,这个参数options是订单列表,或者其他页面带入的。从申请退款页返回,是不用参数的,返回onShow 执行需要的orderId是原来已经缓存的。 然后onShow直接用这个参数,onShow是获取不到url参数的。

小提示

小程序开发中,如果用到倒计时,当退出小程序,或者,按手机home键,倒计时不会继续执行。比如,到时间是30s,你按了home键,过了10s,再进入小程序,倒计时不是是20s,依旧会从30s倒计时。 所以,也需要用到onShow,来刷新这个倒计时。 这也是小程序退出,重新进入不会执行onLoad函数的问题。

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

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

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

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

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