收藏
回答

页面生命周期和其自定义组件的attached执行条件,是我对它们的有很大误解?

一个普通页面的 onLoad 和 onShow

Page({
   // 页面的load和show,在页面被访问都会执行,其中load在页面未卸载前仅只执行一次
   onLoad(){
      console.log('load')
   },
 
   onShow(){
      consle.log('show')  
   }
})

该页面上的一个子定义组件

Component({
  //  组件挂载到页面上时执行一次
  //  当前页面未销毁,切到其他页面,再次切回时不执行
  attached(){ 
    console.log('component attached')
  },
  //  组件挂载到页面上时不会执行
  //  当前页面未销毁,再次切回当前页面时执行
  pageLifetimes:{
    show(){
      console.log('pageLifetimes show')
    }
  }
})

这上面的自定义组件的pageLifetimes 表现是不是很矛盾,是一个BUG?

测试 iPhone6sp,微信开发者工具

官方说明: pageLifetimes 子组件所在页面展示时会触发页面的命周期函数(show)


问: 从其他页面navigateTo到页面不属于页面展示吗?

关键问题: 可能有机子都会触发的场景,因为有机子过了我这个show的业务,然后... 挺郁闷的

这个社区富文本服了。。咱墙都不服,吐槽一下,社区活跃度很大原因可能如此吧, 所以我很多时候都找简书和掘金,都好难。

最后一次编辑于  2019-10-30
回答关注问题邀请回答
收藏

1 个回答

  • 卢霄霄
    卢霄霄
    2019-10-30

    组件加载上以后 才会触发后续的 onShow

    2019-10-30
    有用
    回复 3
    • lnfinityAndBeyond😁
      lnfinityAndBeyond😁
      2019-10-30
      谢谢,所以第一次进入不会触发 子组件内部的pageLifetimes show,组件加载以后才能监听页面的周期,不过我还是测找问题。现在我测试当前页面是携带参数的,navigateTo每次相当重新加载了页面,每次子组件重新加载。但是有存在子组件未重新加载的情况。子组件或外包的view没有带没有wx:if或hidden
      2019-10-30
      回复
    • 卢霄霄
      卢霄霄
      2019-10-30回复lnfinityAndBeyond😁
      可以用组件的 observer来监听组件属性变化
      2019-10-30
      回复
    • lnfinityAndBeyond😁
      lnfinityAndBeyond😁
      2019-10-30回复卢霄霄
      原先是用observer来判断的,因为页面各种复杂原因,所以我还是选择了在子组件中拿相同的数据进行
      2019-10-30
      回复
登录 后发表内容
问题标签