微信小程序 - 返回上一页并刷新页面(重新执行onLoad内函数达到刷新)

前言

当然,是自定义的顶部导航栏,非官方。

这个需求很常见,比如 当付款完成后需要返回查看订单列表,此时数据必须是 新数据,而不是 旧数据 因此需要在返回后,页面及时反馈出操作后的结果列表。

效果图

这是项目中的效果(不是本篇博客的demo效果),但是大概就是这个意思。
在这里插入图片描述

实现过程

整体思路是,先获取当前页面栈(用小程序API),然后找到上一页的页面栈(跳转前执行 onLoad 刷新数据),最后完成上一页跳转。

// 1.获取页面栈(返回一个数组,包含了所有曾经去过的页面)
var pages = getCurrentPages();//可以log看看是什么(里面什么都有--)

// 2. 拿到上一页(数组长度-2就是上一页)
var beforePage = pages[pages.length - 2];

// 3. 执行上一页 onLoad 函数(刷新数据)
// 假设请求后端数据并渲染页面的函数是: getNavGird()
beforePage.getNavGird()

// 4. 跳转页面()
wx.reLaunch({
    // 注意:pages对象中可以获取路径(动态需求时)
    url: '/pages/index/index',
});

写在后面

建议在列表页的 onLoad 函数中,将数据请求单独放在一个函数中进行调用

比如这里的 getNavGird(),这样在 create 页面就能只刷新数据,而 onLoad 中可能存在的,比如获取用户 id 等操作,则不会重复再次执行。

猜你喜欢

转载自blog.csdn.net/weixin_44198965/article/details/107821802