生命周期:
created: 实例创建完成,可访问data、computed、watch、methods上的方法和数据,未挂载到DOM,不能访问到el属性,el属性,ref属性内容为空数组常用于简单的ajax请求,页面的初始化
beforeMount:在挂载开始之前被调用,beforeMount之前,会找到对应的template,并编译成render函数
mounted:实例挂载到DOM上,此时可以通过DOM API获取到DOM节点,$ref属性可以访问
常用于获取VNode信息和操作,ajax请求
beforeupdate:响应式数据更新时调用,发生在虚拟DOM打补丁之前,适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器
updated:虚拟 DOM 重新渲染和打补丁之后调用,组件DOM已经更新,可执行依赖于DOM的操作,避免在这个钩子函数中操作数据,可能陷入死循环
beforeDestroy:实例销毁之前调用。这一步,实例仍然完全可用,this仍能获取到实例
常用于销毁定时器、解绑全局事件、销毁插件对象等操作.
destroy:实例销毁
父子组件生命周期运行顺序
- 挂载:父亲created --> 子created --> 子mounted --> 父mounted
- 更新/销毁:父beforeupdated/beforedestroyed--> 子beforeupdated/beforedestroyed--> 子updated/destroyed --> 父updated/destroyed
可以好好想想现实:先有父,再有子, 挂载子的dom,再挂载父的dom;先父亲准备更新,子准备更新,子更新,再父亲更新