微信小程序开发时,在当前详情页面保存时,自动返回上一列表页面时,新添加的数据没有刷新,页面列表没有重新请求数据,可以利用页面onShow
方法监听实现刷新。
1 说明
在很多业务场景之下,需要返回上一级页面,并进行刷新,在微信小程序中的wx.navigateBack 方法中,返回上一页是不会刷 新的。如果上一页的页面加载是在onLoad方法中触发的话,那么可以修改为在onShow方法中触发。
(1)onLoad(Object query):页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
(2)onShow:页面显示/切入前台时触发。
值得注意的是:如果上一级的页面是从上上级页面跳过来的话,之前在onLoad方法中,使用的options获取的参数方法,那么
当修改为onShow加载的时候就需要,将这个方法稍微修改一下,可以选择使用页面栈的方式,获取上上级页面传来的参数:
2 示例
2.1 发送
/** * 点击发送 */ clickSearch: function (e) { console.log("efwfhbw==", e) //获取页面栈 let pages = getCurrentPages(); //获取所需页面 let prevPage = pages[pages.length - 2]; //上一页 console.log("ewhfbherbv===2", prevPage.options); prevPage.setData({ reloadPage: true, //需要传过去的数据 }); wx.navigateBack({ delta: 1, }) },
说明:
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出
pages[pages.length - 2] 是上一页,-1是当前页
然后直接调用上一页的setData方法
message 是上一页定义的变量,e.currentTarget.dataset.msg为当前页要传的数据
然后调用wx.navigateBack返回,delta表示返回的页数,
如果delta大于现有页面数,则返回到首页
2.2 接受
/** * 页面的初始数据 */ data: { reloadPage: false }, /** * 生命周期函数--监听页面显示 */ onShow: function () { if(this.data.reloadPage) console.log("ewhfbherbv===3", that.data.reloadPage); },