关于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回答

Scott

2017-08-27

首先 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 里面,可以做比如通过域名识别来获取微信认证信息的操作。


有时候一个场景下放到多个钩子函数中都可以,关于这一点,我会和慕课网沟通后,看看要不要后面把所有大家遇到的问题整理下,看看是不是针对性补录一些基础性的知识点给到大家,包括你提到的这个问题

0
1
mylovef
谢谢男神!
2017-08-27
共1条回复

开发微信全家桶项目Vue/Node/MongoDB高级技术栈全覆盖

Nuxt/Vue SSR + Koa2 跨栈开发微信公众号+小程序

989 学习 · 401 问题

查看课程