Vue生命周期

1. beforeCreate

初始化界面前 : 在当前阶段data、methods、computed以及watch上的数据和方法都不能被访问。

2. created
初始化界面后 : 在实例创建完成后发生,当前阶段已经完成了数据观测,也就是可以使用数据,更改数据,在这里更改数据不会触发updated函数,也就是不会更新视图,SSR可以放这里。

3. beforeMount
挂载前 :完成模板编译,虚拟Dom已经创建完成,即将开始渲染。在此时也可以对数据进行更改,不会触发updated。

4. mounted
挂载完成 : 将编译好的模板挂载到页面 (虚拟DOM挂载) ,可以在这进行异步请求以及DOM节点的访问,在vue用$ref操作。

5. beforeUpdate
更新数据前 : 组件数据更新之前调用,数据都是新的,页面上数据都是旧的 组件即将更新,准备渲染页面 , 可以在当前阶段进行更改数据,不会造成重渲染。

6. updated
组件更新后 : render重新渲染 , 此时数据和界面都是新的 ,要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新。

7. beforeDestroy
组件卸载前 : 实例销毁之前,在当前阶段实例完全可以被使用,我们可以在这时进行善后收尾工作,比如清除计时器。

8. destroyed
组件卸载后 : 组件已被拆解,数据绑定被卸除,监听被移出,子实例也统统被销毁。

9. activited
keep-alive 专属 , 组件被激活时调用。

10. deactivated
keep-alive 专属 , 组件被销毁时调用。

渲染(执行)顺序如此排序。

初次渲染就会触发的生命周期:

beforeCreate() -> created() -> beforeMount() -> mounted() -> updated()

完整的页面加载过程:

beforeCreate() ->onLoad()->onShow()-> created() -> beforeMount()->onReady() -> mounted() -> updated()

红色部分注意,在页面的渲染位置。

除了 Vue 的生命周期之外,uniapp 也有一套自己的页面生命周期 ,它们依然和 data 等方法同级
onInit(){}  监听页面初始化
onLoad(options){}   监听页面的加载 :它的参数是上个页面所传递的数据,参数类型是对象类型(用于页面之间的传参)
onShow(){}  监听页面的显示:页面每次出现在屏幕上都会触发,包括从下级页面点返回露出当前页面

onReady(){}  监听页面初次渲染完成
onHide(){} 监听页面的隐藏

onUnload(){}  监听页面的卸载
onResize(){}   监听窗口尺寸变化:仅支持:App、微信小程序、快手小程序
onPullDownRefresh(){}  监听用户下拉动作:比如下拉刷新
uni.stopPullDownRefresh(){}  将停止页面的刷新动作
onReachBottom(){}  页面滚动到底部

posted on 2024-05-31 16:41  侗家小蚁哥  阅读(34)  评论(0编辑  收藏  举报