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({
myData: "hbvher", //需要传过去的数据
});
wx.navigateBack({
delta: 1,
})
},
说明:
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出
pages[pages.length - 2] 是上一页,-1是当前页
然后直接调用上一页的setData方法
message 是上一页定义的变量,e.currentTarget.dataset.msg为当前页要传的数据
然后调用wx.navigateBack返回,delta表示返回的页数,
如果delta大于现有页面数,则返回到首页
2.2 接受
/**
* 页面的初始数据
*/
data: {
myData: ""
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
var that=this;
let pages = getCurrentPages();
let currPage = pages[pages.length - 1];
console.log("ewhfbherbv===3", that.data.myData);
},