Vue 初始化获取数据应该放到 Created 还是 Mounted 中?

Vue 初始化获取数据应该放到 Created 还是 Mounted 中?

以下片段摘自官方文档

created:

在实例创建完成后被立即同步调用。在这一步中,实例已完成对选项的处理,意味着以下内容已被配置完毕:数据侦听、计算属性、方法、事件/侦听器的回调函数。然而,挂载阶段还没开始,且 $el property 目前尚不可用。

mounted:

实例被挂载后调用,这时 el 被新创建的 vm.$el 替换了。如果根实例挂载到了一个文档内的元素上,当 mounted 被调用时 vm.$el 也在文档内。

注意 mounted 不会保证所有的子组件也都被挂载完成。如果你希望等到整个视图都渲染完毕再执行某些操作,可以在 mounted 内部使用 vm.$nextTick

分析

按理来说,用created和mounted获取后端初始化数据能达到的效果是一致的,只不过使用mounted时,显示的数据有可能是页面渲染完成后,页面的响应式效果将数据显示在页面中;而created是获取到数据再渲染到页面中。所以将数据初始化放到created中的话,逻辑上是比较合适的

但并不是说,这是一种绝对的操作,数据初始化就一定要写死在created中。比如说你需要用到dom操作:使用echarts时,如果你将数据获取放在了created的话,它会有出现无数据的情况(有时候确实又有数据),那时由于在用echarts钩子的时候,需要用ref获取dom元素,在dom初始化之前调用ref是无法获取到的。在使用echarts的时候,获取数据是需要写到mounted中的。

还有一种情况就是,created中放了很多同步代码或者一个需要执行很长很长时间的数据获取代码的话,会出现打开页面白屏很长的时间(什么都不显示),这对用户体验来说,是十分不友好的,用户可能会认为你的服务器烂到爆炸。所以当有初始化数据执行时间长的同步方法,是推荐放到mounted中的。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuecreated和mounted是生命周期钩子函数,用于在不同的阶段执行相应的操作。 created钩子函数在Vue实例创建完成后立即调用。在这个阶段,模板和虚拟DOM都还未渲染成真实的DOM。可以进行一些初始化操作,如数据的获取、事件的监听等。 而mounted钩子函数在Vue实例挂载到DOM元素上后调用。此时,实例已经创建并且模板和虚拟DOM都已经渲染成了真实的DOM。可以进行一些需要操作DOM的操作,例如访问DOM元素、操作DOM等。 所以,created和mounted的区别在于调用的时机不同。created在Vue实例创建完成后调用,而mounted在实例挂载到DOM元素上之后调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vuecreated和mounted的区别浅析](https://download.csdn.net/download/weixin_38500944/12938173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Vue实例生命周期created和mounted的区别详解](https://download.csdn.net/download/weixin_38523618/12774215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [VUEcreated和mounted有什么不同](https://blog.csdn.net/weixin_44031654/article/details/130781047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值