Taro 页面返回携带参数
用taro做小程序的项目中,也是经常用到从A页面跳到B页面,再从B页面返回A页面携带参数的业务逻辑,
就有很多种方法,本地存储就是一种解决方案,
小程序官方有自带的一种返回携带参数,但是这种方法在taro中并不能使用
我们在B页面要返回之前要拿到上个页面的信息
let pages = Taro.getCurrentPages(); // 获取当前的页面栈 let prevPage = pages[pages.length - (num+1)]; // 获取上一页面
然后从 prevPage 中设置setData 一个数据 最好是传入一个对象,拿值的时候就方便的多
prevPage.setData({num:1})
然后再返回
Taro.navigateBack({ delta:num });
接着返回到A页面之后,我们要在 componentDidShow()中拿到数据
let pages = Taro.getCurrentPages(); let currPage = pages[pages.length - 1]; // 获取当前页面
console.log(currPage.data.num) //就是从B页面传过来的值
完整代码如下:
/** * 返回时携带参数 * 传参的页面:backWithParam(num,params) * 接受的页面在 componentDidShow() 方法中接收,setState后需要手动刷新key * let pages = Taro.getCurrentPages(); * let currPage = pages[pages.length - 1]; // 获取当前页面 * this.setState({ * house_id: currPage.data.house_id, * }) */ export const backWithParam = function (num=1,data) { let pages = Taro.getCurrentPages(); // 获取当前的页面栈 let prevPage = pages[pages.length - (num+1)]; // 获取上一页面 prevPage.setData(data) Taro.navigateBack({ delta:num }); }
写到工具类中,然后在B页面引入执行后返回A页面
在A页面中写入
componentDidShow() { let pages = Taro.getCurrentPages(); let currPage = pages[pages.length - 1]; // 获取当前页面
console.log(currPage.data.fillInfo)
if (currPage.data.fillInfo == '1'){
xxxxxxx //代码逻辑 }
}
最后打印的值就是从B页面传过来的值