原生微信小程序中页面生命周期与组件生命周期的触发时间顺序

原生微信小程序中页面生命周期与组件生命周期的触发时间顺序

1.用微信开发者工具新建一个项目
2.新增两个组件,作为测试用
在这里插入图片描述
3.页面只有log,index作为测试
在这里插入图片描述
4.现在index页面进行测试

  • 将组件挂载到界面中,在页面index.json,进行生命
 "usingComponents": {
    "demo01":"/components/demo01"
  }
  • 开始测试页面生命周期
  onLoad(){
    console.log(111)
  },
  onShow(){
    console.log(222);
    // this.setData({
    //   showDemo:false
    // })
  },
  onReady(){
    console.log(333)
  },
  onHide(){
    console.log(11111);
  }
  • 开始测试组件生命周期
pageLifetimes:{
    show(){
      console.log(888)
    },
    hide(){
      console.log(999)
    }
  },
  lifetimes:{
    created(){
      console.log(444)
    },
    attached(){
      console.log(555)
    },
    ready(){
      console.log(666);
    },
    detached(){
      console.log(777);
    },
    moved(){
      console.log(1010);
    }
  }
  • 测试结果
    在这里插入图片描述
    进行分析:

1.页面显示
组件create->组件attached()->页面onLoad()->组件show()->页面onShow()->组件ready()->页面onReady();
2.页面隐藏(页面栈不销毁,如navigateTo);
在前面的基础上,组件hide()->页面onHide();
注意页面隐藏时,组件不会进行销毁,所以组件中并不会触发detached();
要触发组件detached(),只有销毁的情况才会触发,所以有两个情况:

(1)组件时是通过判断的情况,页面隐藏时设置为false,就会触发detached();

  <block wx:if="{{showDemo}}">
    <demo01></demo01>
  </block>
js中
 onShow(){
    console.log(222);
    this.setData({
      showDemo:false
    })
  },

(2)页面卸载时(将页面从页面栈中清除),同时组件也会卸载,所以也会触发detached

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值