微信小程序关于redirectTo和navigateTo、navigateBack详解及使用
文章目录前言一、小程序导航跳转的几种方法?二、使用步骤1.A页面跳转2.B页面处理数据3.A页面处理(扩展)总结前言前言:在小程序开发过程中,我们会遇到这样的需求,点击A页面上的某个元素跳到B页面(使用redirectTo),在B页面上处理完数据之后再回到A页面(使用redirectTo),那么A页面会重新被渲染,数据全部初始化,特别是某些需要权限认证的页面,重新认证是不合理的,这不满足需求。因此
·
前言
前言:在小程序开发过程中,我们会遇到这样的需求,点击A页面上的某个元素跳到B页面(使用redirectTo),在B页面上处理完数据之后再回到A页面(使用redirectTo),那么A页面会重新被渲染,数据全部初始化,特别是某些需要权限认证的页面,重新认证是不合理的,这不满足需求。因此选择了A→B(使用navigateTo),B→A(使用navigateBack)那么A页面不会重新执行onLoad,部分逻辑可以放在onShow处理。
提示:以下是本篇文章正文内容,下面案例可供参考
一、小程序导航跳转的几种方法?
- wx.redirectTo
关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。 - wx.navigateTo
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。 - wx.switchTab
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 - 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();
}
},
总结
还有另外两种跳转方式,本篇没有涉及到,以后有时间也会进行探索的,麻烦点个赞啊~~~
更多推荐
已为社区贡献1条内容
所有评论(0)