天分享个小技巧,用于获取小程序页面栈某个页面的实例,用于在当前页面修改之前页面的数据,不知道大家是否有类似的需求。
举个例子:我们需要在会员中心页,跳转到订单中心页面进行支付,支付成功返回当前页面更新,那么可以在订单中心页面直接更新会员中心页面的数据吗?答案是肯定的。
接下来直接放代码啦~
let routers = getCurrentPages() //获取小程序页面栈 routers.map((item) => { if (item.route === 'members/index/index') { // 需要在当前页面修改该页面的数据 item.onLoad() // 可直接调用 ‘members/index/index’ 页面的onLoad生命周期。 item.initData() // 可直接调用 ‘members/index/index’ 页面的方法 item.setData({ isShow: true // 可直接setData ‘members/index/index’ 页面的data数据 }) } })
那不是有同学会说 返回onShow的时候再调用就好了嘛?当然回答是可以的,但是在某些场景下却不适用,使用上述方法可以做到返回时页面数据已经渲染完成了。
举个大家经常遇到的例子:列表页翻页,跳转详情页,在详情页操作后 需要隐藏掉列表页的内容,onShow请求接口刷新数据会导致内容滚动到顶部,而在详情页可以操作完成后setData自动滚动到该记录位置,当然也有其他方案可以实现,但是从目前实现后体验下来该方式是最简单的。
好了,以上就是本周分享的小技巧,欢迎大家留言评论讨论问题。