vue的声明周期
1、 beforeCreate 实例初始化之后,this指向创建的实例,不能访问到、data,computed,watch,methods上的方法和数据。 常用于初始化非响应式变量。
2、created 实例创建完成,可访问data,computed,watch,methods上的方法和数据,未挂载到DOM。不能访问到 e l 属性, el属性, el属性,ref属性为空数组。 常用于简单的ajax请求,页面的初始化,注意此时元素并未显示在网页上,所以一旦ajax请求过多,会出现长时间的白屏现象。
3、beforeMounted 在挂载之前被调用,beforeMounted之前,会找到对应的template,并编译成render函数。
4、mounted 实例挂载到DOM上,此时可以通过DOM API获取到DOM节点,$ref属性可以访问。 常用于获取VNode信息和操作,ajax请求,此时元素已经显示在网页上,可以发起一些大量数据的请求。
5、beforeupdate 响应式数据更新时调用,发生在虚拟DOM打补丁之前。适合在更新之前访问现有的DOM,比如手动移出已经添加的事件监听器。
6、update 虚拟DOM更新渲染和打补丁之后调用,组件DOM已更新,可执行依赖与DOM的操作。 避免在这个钩子函数中操作数据,可能陷入死循环。
7、beforeDestroy 实例销毁之前调用,这一步,实例仍然完全可用,this仍能获取到。 常用于销毁定时器、解绑全局事件、销毁插件对象等操作。
8、destroyed 实例销毁后调用,调用后,Vue实例指示的所有东西都会解绑定,所有的和私情监听器会被移除,所有的子实例也会被销毁。
如果仅仅是获取数据,不依赖于 DOM 元素(即数据获取与视图无关),建议放在 created 中,尽早开始请求。
如果需要确保 DOM 已经渲染完成,或者某些操作依赖于渲染后的 DOM(例如动态获取元素的大小或位置),则应使用 mounted。
created:适合请求数据,但不依赖于 DOM 渲染完成。
mounted:适合在 DOM 渲染后请求数据,或者需要操作 DOM 的场景。