关于vue请求数据的生命周期问题
来源:5-2 开发家族脸谱首页(上)
mylovef
2017-08-17
vue请求数据,我发现很多项目的做法都不相同,有在created钩子函数里面请求的,有在beforecreate里面请求的(比如老师的项目5.2节的pages/shopping/index.vue),并且同样是这个课程的代码,在有的模块老师也同样在created钩子函数里面请求后台数据(通过dispatch action)(比如在pages/admin/products.vue)
另外有的项目开发者在mounted里面获取(当然服务端渲染是不能这样的)
所以想问一下,如果是服务端渲染,beforecreate和created中请求后台数据有什么不同的使用场景吗?一般使用哪个更多一些
如果是客户端渲染,那beforecreate,created,beforemount,mounted中,请求后台数据又有什么不同的使用场景吗?一般使用哪个最好?谢谢
1回答
-
首先 Vue 的生命周期,我们应该了解它们的钩子函数被调用的时机,根据时机以及我们页面的渲染场景来判断使用哪个
new Vue({ el: '#vueApp', // 初始化 vue 内部事件之前 beforeCreate: function () {}, // 初始化 vue 内部事件之后 created: function () {}, // 挂载开始之前被调用 render 函数首次被调用 beforeMount: function () {}, // el 被新创建 vm.$el 替换且挂载到实例上之后 mounted: function () {} })
beforeCreate 和 created 都是早期钩子,是我们获取数据的较好时机,如果获取的数据与绑定事件有关,可以放到 created 里面,无关的话,都可以,在服务器端的应用场景中, beforeCreate 可能会用到的多一些。
beforeMount 和 mounted 多用于页面组件上有新的用户交互,触发新的请求时候使用,比如在 mounted 里手动去触发滚动条的位置,而 beforeMount 里面,可以做比如通过域名识别来获取微信认证信息的操作。
有时候一个场景下放到多个钩子函数中都可以,关于这一点,我会和慕课网沟通后,看看要不要后面把所有大家遇到的问题整理下,看看是不是针对性补录一些基础性的知识点给到大家,包括你提到的这个问题
012017-08-27
相似问题