添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
小程序
开发
|

my.navigateBack

    努力加载中...
    收藏
    努力加载中...

my.navigateBack(Object object)

主体: 企业支付宝小程序 个人支付宝小程序

相关文档: 路由使用须知

简介

my.navigateBack 关闭当前页面,返回上一级或多级页面。

可通过 getCurrentPages() 获取当前的页面栈信息,决定需要返回几层。

使用此 API 前,建议先阅读 路由使用须知

入参

Object object

查看示例
属性 类型 默认值 必填 描述
delta Number 1 回退的页面数。如果 delta 大于等于打开的页面栈深度,则返回到栈底页面。
success Function - 调用成功的回调函数。
fail Function - 调用失败的回调函数。
complete Function - 调用结束的回调函数(调用成功、失败都会执行)。

错误码

fail 回调的参数为 Object, error 属性为错误码, errorMessage 属性为错误消息。

错误码 错误消息 解决方案
"already top of navigation" 当前页面栈的深度为 1,无法再回退 避免在最后一个页面上调用。可使用 getCurrentPages() 获取当前页面栈深度,提前判断。

代码示例

代码示例
Page({
    navigateBack() {
      my.navigateBack(); // 返回上一页
    navigateBackDelta() {
      my.navigateBack({ 
        delta: 2 
      }); // 返回上一页的上一页
});

常见问题

Q:使用 my.navigateBack 返回,如何通知所到达的页面刷新?是否可以通过监听返回按钮点击或页面返回事件达到这一目的?

A:

使用 my.navigateBack 返回所到达的页面并不会自动刷新。当前页面可以通过 onBack 监听到导航栏上返回按钮(以及 Android 系统返回键)被点击,但不支持监听左滑手势、API 调用等其他方式导致的返回。但无论哪种返回方式,当前页面关闭前都会触发 onUnload ,返回到达的页面均会触发 onShow ,故可利用这个机制进行必要的处理。注意 onShow 事情并不一定是通过返回触发,需要自行判断。一种实现方式如下:

// 当前页面
Page({
  onSomeButtonTap() {
    // 在全局数据中存信息,带时间戳
    getApp().globalData.navigateBackPayload = this._navigateBackPayload = {
      time: Date.now(),
      message: 'by my.navigateBack',
    // 调用接口返回
    my.navigateBack();
  onUnload() {
    if (!this._navigateBackPayload) {
      // 其他方式离开页面,也存一条
      getApp().globalData.navigateBackPayload = {
        time: Date.now(),
        message: 'by other means',
// 返回的目标页面
Page({
  onShow(options) {
    // 从全局数据中取信息
    const { globalData } = getApp();
    const { time, message } = globalData.navigateBackPayload || {};
    // 比较时间戳,推测是否为有效数据。1000ms 只是个粗糙的经验值,可调整
    if (time && Date.now() - time < 1000) {
      console.log('do something with message: ' + message);
    // 清除信息,避免重复处理
    globalData.navigateBackPayload = null;