Fork me on GitHub

taro 小程序生命周期

1. 微信小程序的生命周期

weapp

页面生命周期,如上图所示:

  • onLoad: 监听页面加载
  • onShow: 监听页面显示
  • onReady: 监听页面初次渲染完成
  • onHide: 监听页面隐藏
  • onUnload:监听页面卸载

除此之外,还有页面相关事件处理函数(点击查看详情)):

  • onPullDownRefresh:监听用户下拉动作
  • onReachBottom: 页面上拉触底事件的处理函数
  • onShareAppMessage:用户点击右上角转发
  • onPageScroll: 页面滚动触发事件的处理函数
  • onResize: 页面尺寸改变时触发,详见 响应显示区域变化
  • onTabItemTap: 当前是 tab 页时,点击 tab 时触发

2. taro 的生命周期

taro 是基于 react 的,所以先回顾下 react 的生命周期:

react

接下来,我们对应下 taro 和 微信小程序的生命周期(点击查看详情

2.1 入口生命周期

生命周期方法 作用 说明
componentWillMount 程序被载入 在微信小程序里对应的生命周期是 onLaunch
componentDidMount 程序被载入 在微信小程序里对应的生命周期是 onLaunch
componentDidShow 程序展示出来 在微信小程序里对应的生命周期是 onShow,在 H5/RN 中同步实现
componentDidHide 程序被隐藏 在微信小程序里对应的生命周期是 onHide,在 H5/RN 中同步实现
componentDidCatchError 程序发生脚本错误或 API 调用报错 在微信小程序里对应的生命周期是 onError,H5/RN 中尚未实现
componentDidNotFound 程序要打开的页面不存在 在微信小程序里对应的生命周期是onPageNotFound,其他端尚未实现

2.2 页面生命周期

由于页面 JS 也继承自 Component 组件基类,所以页面同样拥有生命周期,页面的生命周期方法如下:

生命周期方法 作用 说明
componentWillMount 页面加载时触发,一个页面只会调用一次,此时页面 DOM 尚未准备好,还不能和视图层进行交互 在微信小程序里对应的生命周期是 onLoad
componentDidMount 页面初次渲染完成时触发,一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互 在微信小程序里对应的生命周期是 onReady
shouldComponentUpdate 页面是否需要更新,返回 false 不继续更新,否则继续走更新流程
componentWillUpdate 页面即将更新
componentDidUpdate 页面更新完毕
componentWillUnmount 页面卸载时触发,如 redirectTo 或 navigateBack 到其他页面时 在微信小程序里对应的生命周期是 onUnload
componentDidShow 页面显示/切入前台时触发 在微信小程序里对应的生命周期是 onShow, H5同步实现
componentDidHide 页面隐藏/切入后台时触发, 如 navigateTo 或底部 tab 切换到其他页面,小程序切入后台等 在微信小程序里对应的生命周期是 onHide, H5同步实现

2.3 组件的生命周期

由于组件 JS 也继承自 Component 组件基类,所以组件同样拥有生命周期,组件的生命周期方法如下(具体可以去官网查看):

  • componentWillMount
  • componentDidMount
  • componentWillReceiveProps 已经装载的组件接收到新属性前调用
  • shouldComponentUpdate
  • componentWillUpdate
  • componentDidUpdate
  • componentWillUnmount

学习链接:

-------------本文结束感谢您的阅读-------------