前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序 修改/使用上一个页面的data数据及方法 getCurrentPages()获取页面栈的使用 常见页面展示

微信小程序 修改/使用上一个页面的data数据及方法 getCurrentPages()获取页面栈的使用 常见页面展示

作者头像
煎饼
发布2022-12-13 18:37:55
2.3K0
发布2022-12-13 18:37:55
举报
文章被收录于专栏:煎饼的博客

今天讲一个 getCurrentPages()的使用案例 getCurrentPages() 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。

看到很多那种交叉页面传递值是用缓存或者是url带值 重新获取的

最常见的场景就是商城下单的时候进入下单页面 又需要去选择优惠券或者是去选择地址的时候 其实这种使用getCurrentPages()获取页面栈调用或者修改上一页的方法跟data就可以了

代码语言:javascript
复制
//页面B

click_address() {
  let pages = getCurrentPages();// 获取页面栈
  let current= pages[pages.length - 1]; // 当前页面
  let url = current.route //当前页面url
  let options = current.options //如果要获取url中所带的参数可以查看options
  let prevpage= pages[pages.length - 2]// 上一个页面
  let data = prevpage.data // 获取上一页data里的数据
  if(prevpage){//存在上一页
    prevpage.changeDataPageA('load');// 调用上一页的函数
    prevpage.setData({address_id: id})// 修改上一页的数据
    wx.navigateBack();// 返回上一页
  }
}
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
  goOrder(e){
    var id = e.currentTarget.dataset.id;
    var pages = getCurrentPages();
    var prevPage= pages[pages.length - 2];
    if (prevPage) {
      prevPage.setData({ address_id:id})
      wx.navigateBack();
    }
  },

需要注意的就是:

不要尝试修改页面栈,会导致路由以及页面状态错误。

不要在 App.onLaunch 的时候调用 getCurrentPages,此时 page 还没有生成。

页面A必须使用 wx.navigateTo() 跳转到下一页面B,不能使用wx.redirectTo等其它的跳转方式,这样会关闭上一个页面,导致页面B无法获取上一页的Page实例

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档