前言
当然,是自定义的顶部导航栏,非官方。
这个需求很常见,比如 当付款完成后需要返回查看订单列表,此时数据必须是 新数据
,而不是 旧数据
。 因此需要在返回后,页面及时反馈出操作后的结果列表。
效果图
这是项目中的效果(不是本篇博客的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
等操作,则不会重复再次执行。