从page-container跳转下一页面,再返回,page-container页返回按钮无效?

113 阅读1分钟

从page-container跳转下一页面,再返回,page-container页返回按钮无效?

问题描述:从首页跳转详情页,在详情页打开page-container并跳转编辑页,再从编辑页返回详情页后,详情页的返回按钮失效,无法返回首页。只有再次打开page-container并关闭,返回按钮才有效。

经过多次测试终于找到问题所在,当页面跳转时如果触发了关闭page,show状态值会丢失,所以在返回页面时当前页的返回按钮找不到show状态值,解决的办法有两个,

一:返回页面时在onShow中对page的show重新赋true或false,

二:跳转页面时做50ms延迟,等待page的show值确定

  onMyscreen(e) {
    let data = e.detail;
    setTimeout(() => {
      wx.navigateTo({
        url:
          "/pages/index/collectionnew/filterpage/filterpage?filter=" +
          JSON.stringify(data),
      });
    }, 500);
  },

其他方案

可以试一下把page-container封装成一个组件,在封装组件的pageLifetimes里面手动控制show的状态

// JS
Component({
  properties: {
    // 相当于原page-container的show
    show: {
      type: Boolean,
      value: false
    }
  },
 
  data: {
    pageShow: true // 页面显示状态
  },
  
  pageLifetimes: {
    show() {
      this.setData({
        pageShow: true
      })
    },
 
    hide() {
      this.setData({
        pageShow: false
      })
    }
  }
})

使用

<popup show="{{popupShow}}">
  ...
</popup>