Vue请求初始化数据放在Created还是Mounted?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue请求初始化数据放在Created还是Mounted?相关的知识,希望对你有一定的参考价值。

参考技术A 1,首先我们看下官网对created和mounted这个2个生命周期怎么定义的:
created:
(在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。---官方贴的)

mounted:
(el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。---官方贴的)

2、然后我想问下,Vue的生命周期还有那一些?
是不是有以下生命周期:

(这个很多我都没有用过。--(;′⌒`)---);

3、我想问问大家页面请求初始化数据跟Vue的生命周期有什么关系?
我的答案是没有很大的关系(个人观点)--如果有疑问可以找我聊聊
4、很多人跟我说初始化放在Mounted里面, 我问她(他)们为什么?她(他)们回答说因为这个时候DOM初始化渲染好啦。然后我继续问DOM初始化渲染和请求初始化数据有什么关系?他们会说可以显示请求出来的数据啦。(大家觉得有冲突吗?)
--DOM初始化渲染和请求初始化数据并没有什么冲突好吗!
5、让我们在看看前面的Vue生命周期
a、beforeCreate:
(在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。---官方贴的)

b、beforeMount:
(在挂载开始之前被调用:相关的 render 函数首次被调用。---官方贴的)

看了这个2个我们继续分析:
我们请求回来的初始化数据或者基础数据是不是需要挂在Vue的Data上面?(是的,需要√)
然后我们继续beforeCreate的时候Data有没有生成?(答案是:没有。×)
--所以这一步是无法把数据挂到Vue的Data上面的
然后我继续看created的时候Data有没有生成?(答案是:生成啦。√)
--所以这一步我们是可以把数据挂到Vue的Data上面的,是不是可以放在这里啦?
--是的,可以放在这里啦。所以最后结论就是放在created里面。(仅发表个人的意愿,如果有不妥的请勿喷)
---补充
有人问我因为请求数据是异步的,为什么不可以放在beforeCreate,等请求完成啦Vue的data不就生成的吗? 答案是可以的。的确是;但是你不能把你需要的初始化数据的请求放在一个Vue的Methods里面, 因为这个时候是无法获取到Methods的函数的。所以你要这样写:

所以本人建议放在created里面:

个人喜好把~~~~!!!!!
如有问题,可以加Q讨论哦:1366379285,加好友备注“”

以上是关于Vue请求初始化数据放在Created还是Mounted?的主要内容,如果未能解决你的问题,请参考以下文章

vue中ajax请求放在哪个生命周期中

vue HTTP请求(针对vue-resource)

vue 生命周期

Vue在created异步请求数据,在mounted中获取不到

vue 钩子函数执行顺序

在 Vue 中created 和 mounted 的区别