上QQ阅读APP看书,第一时间看更新
2.5.1 面试技巧与解析(一)
面试官:Vue的生命周期是什么?
应聘者:
(1)beforeCreate()(创建前)在数据观测和初始化事件还未开始时被调用。
(2)created()(创建后)在完成数据观测、属性和方法的运算、初始化事件后被调用,$el属性还没有显示出来。
(3)beforeMount()(载入前)在挂载开始前被调用,相关的render函数首次被调用。实例已完成以下配置:编译模板,把data中的数据和模板生成.html。注意此时还没有挂载.html到页面上。
(4)mounted()(载入后)在el被新创建的vm.$el替换,并挂载到实例上后被调用。实例已完成以下配置:用上面编译好的.html内容替换el属性指向的DOM对象。注意此时模板中的.html被渲染到.html页面中,此过程中进行Ajax交互。
(5)beforeUpdate()(更新前)在数据更新前被调用,发生在虚拟DOM重新渲染和打补丁前。在该钩子函数中可以进一步更改状态,不会触发附加的重渲染过程。
(6)updated()(更新后)在由于数据更改导致的虚拟DOM重新渲染和打补丁后被调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而,在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子函数在服务器端渲染期间不被调用。
(7)beforeDestroy()(销毁前)在实例销毁前被调用,实例仍然完全可用。
(8)destroyed()(销毁后)在实例销毁后被调用,调用后,所有的事件监听器会被移除、所有的子实例也会被销毁。该钩子函数在服务器端渲染期间不被调用。