生命周期
(Life Cycle)是指一个组件从创建
→运行
→销毁
的整个阶段,强调的是一个时间段
。
生命周期函数
:是由vue框架提供的内置函数
,会伴随着组件的生命周期,自动按次序执行
。
注意:生命周期
强调的是时间段
,生命周期函数
强调的是时间点
。
可以参考 vue 官方文档给出的"生命周期图示",进一步理解组件生命周期执行的过程:
https://v2.cn.vuejs.org/v2/guide/instance.html → 生命周期图示
beforeCreate
组件的 props
/ data
/ methods
尚未被创建,都处于不可用
状态。
created
组件的props
/ data
/ methods
已创建好,都处于可用
的状态。但是组件的模板结构尚未生成
!
beforeMount
将要把
内存中编译好的 HTML
结构渲染到
浏览器中。此时浏览器中还没有
当前组件的DOM结构。
mounted
已经把内存中的 HTML 结构,成功的渲染到了浏览器之中。此时浏览器中已然包含了当前组件的DOM结构
。
beforeUpdate
将要
根据变化过后、最新的数据,重新渲染
组件的模板结构。
updated
已经根据最新的数据,完成了
组件 DOM 结构的 重新渲染
。
beforeDestory
将要销毁
此组件,此时尚未销毁
,组件还处于正常工作
的状态。
destroyed
组件已经被销毁,此组件在浏览器中对应的 DOM结构
已被完全移除
!
在项目开发中,组件之间的最常见的关系
分为如下两种:父子关系
、兄弟关系
父子组件之间的数据共享又分为:父→子
共享数据、子→父
共享数据
父组件向子组件共享数据需要使用自定义属性
。示例代码如下:
子组件向父组件共享数据使用自定义事件
。示例代码如下:
在vue2.x
中,兄弟组件之间数据共享的方案是EventBus
。
EventBus 的使用步骤
eventBus.js
模块,并向外共享一个 Vue的实例对象
发送方
,调用bus.$emit
(‘事件名称’,要发送的数据)方法触发自定义事件
接收方
,调用bus.$on
(‘事件名称’,事件处理函数)方法注册一个自定义事件