vue的生命周期分为8个: beforeCreate,created>beforeMount,mounted>beforeUpdate,update>beforeDestory,destoryed;
当我们创建一个vue实例时(new Vue())时,首先执行init(vue组件默认执行),在执行过程中,调用了beforeCreate,然后再执行rejections和reactivity的时候,又去调用了created;在init的时候,事件已经调用了,因此不要在beforeCreate中去修改data,最早也要在created中区修改(添加某些行为);
在created完成之后,vue会首先是判断实例中是否有el这个配置项,如果有就执行下去,如果没有,就会执行vm.$mount(el);然后再去判断是否有template这个配置项,如果有,就会将template解析成render函数,render函数在beforeMount和mounted之间执行,因此在beforeMount的时候,el还只是一个html里写的元素,在mounted的时候才将渲染出来的内容挂载在DOM节点上面,这中间其实是执行了render function的内容。
beforeMount只有在有了render function的时候才会执行,当执行完了render function的时候,就会执行mounted将渲染出来的内容挂在到DOM节点上。
当数据有变化是,会触发beforeUpdate,通过vm判断是否更新,通过update更新组件。
网友评论