# 生命周期与数据共享
# 生命周期 & 生命周期函数
生命周期 (Life Cycle) 是指一个组件从创建 -> 运行 -> 销毁的整个阶段,强调的是一个时间段
生命周期函数:是由 vue 框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行
- 组件创建阶段
- New Vue()
- beforeCreate
- created
- beforeMount
- mounted
- New Vue()
- 组件运行阶段
- beforeUpdate
- updated
- 组件销毁阶段
- beforeDestroy
- destroyed

- beforeCreated () : 创建阶段的第一个生命周期函数,此时 props, data, methods 都未完成初始化
- created () : 非常常用,经常在它里面,调用 methods 中的方法,请求服务器的数据,并且经常把请求到的数据,转存到 data 中,供 template 模板渲染使用
- beforeMount () : 此时已经编译好 HTML 结构,但是尚未进行渲染
- mounted () : 此时编译好的 HTML 结构已经渲染进 DOM 结构了
- beforeUpdate () : 当接收到新数据,渲染页面结构之前触发此函数
- updated () : 数据更新完毕后触发此函数,当数据变化之后,为了能够操作到最新的 DOM 结构,必须把代码写到 updated 声明周期函数中
- beforeDestroy () : 例如 v-if 条件成立,销毁节点前触发此函数
- destroyed () : 销毁节点后立即触发此函数
# 组件之间的数据共享
组件之间的关系
- 父子关系
- 兄弟关系
# 父组件向子组件传递数据
父组件向子组件共享数据需要使用自定义属性.
父组件 :
1 | <Son :msg="message" :user="info"></Son> |
子组件 :
1 | <template> |
# 子组件向父组件传递数据
子组件向父组件共享数据使用自定义事件
父组件
1 | <Son :msg="message" :user="info" @numChange="getNewCount"></Son> |
子组件
1 | <p>{{count}}</p> |
# 兄弟组件之间的数据共享
在 vue2.x 中,兄弟组件之间数据共享的方案是 EventBus
EventBus 的使用步骤
- 创建 eventBus.js 模块,并向外共享一个 Vue 的实例对象
- 在数据发送发,调用 bus.$emit (‘事件名称’, 要发送的数据) 方法触发自定义事件
- 在数据接收方,调用 bus.$on (‘事件名称’, 事件处理函数) 方法注册一个自定义事件
数据发送方 :
1 | import bus from '@/components/EventBus' |
EventBus.js
1 | import Vue from 'vue' |
数据接收方
1 | import bus from '@/components/EventBus' |
