前言

前言:在小程序开发过程中,我们会遇到这样的需求,点击A页面上的某个元素跳到B页面(使用redirectTo),在B页面上处理完数据之后再回到A页面(使用redirectTo),那么A页面会重新被渲染,数据全部初始化,特别是某些需要权限认证的页面,重新认证是不合理的,这不满足需求。因此选择了A→B(使用navigateTo),B→A(使用navigateBack)那么A页面不会重新执行onLoad,部分逻辑可以放在onShow处理。


提示:以下是本篇文章正文内容,下面案例可供参考

一、小程序导航跳转的几种方法?

  1. wx.redirectTo
    关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
  2. wx.navigateTo
    保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
  3. wx.switchTab
    跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
  4. wx.reLaunch
    关闭所有页面,打开到应用内的某个页面

二、使用步骤

1.A页面跳转

代码如下(示例):

    wx.navigateTo({
      url: "/pages/optometryService/vagueSearch/vagueSearch",
    });

2.B页面处理数据

    const {
      currentTarget: {
        dataset: { latitude, longitude,address },
      },
    } = event;

    let pages = getCurrentPages()  //获取当前页面栈的信息
    let prevPage = pages[pages.length - 2]   //获取上一个页面
    prevPage.setData({   //把需要回传的值保存到上一个页面
      latitude,
      latitude,
      location:address
    });

    wx.navigateBack({
      delta: 1
    });

3.A页面处理(扩展)

如果A页面是用户有权限才能认证的,此时A页面接收到数据(并且A是用户有权限才能访问的),我们可以在onShow进行一些逻辑的处理。

代码如下(示例):

      /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    const { allowAuthorize } = this.data;

    if (allowAuthorize) {
      wx.showLoading({
        title: "加载中",
      });
      this.setData({
        page: 1,
      });
      this.getLbsStoreList();
    }
  },
    

总结

还有另外两种跳转方式,本篇没有涉及到,以后有时间也会进行探索的,麻烦点个赞啊~~~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐