怎么操作Vue加载顺序

这次给大家带来怎么操作Vue加载顺序,操作Vue加载顺序的注意事项有哪些,下面就是实战案例,一起来看一下。

在Vuejs 1.0版本中,如果父子组件进行配合,它们的生命周期执行具有如下特点:

1. created总是先父后子

生命周期函数created总是按照从父到子的顺序依次执行,但是兄弟之间没有严格按照这样的顺序执行,估计是采用了异步函数,不仅如此,子组件在父组件中的插入顺序也是随机的,并没有什么特别的规律。假定子组件的引用顺序如下:

登录后复制

如果采用$children引用来获取所有的子组件,那么”child-c1”并不总是处于第一个位置,如下:

 // 大多数时候判断会失败 if(this.$children[0] === this.$refs.child1) {  // 这里的代码很可能得不到执行机会 }

登录后复制

2. ready的顺序更混乱

按照我的估计,父子组件的ready顺序应该是先子后父,这样才能保证组件完全加载完成,但从实践的实例来看,ready完全没有顺序,有时候是父组件先加载完成,也有时候是子组件先加载完成,所以在编程实践中,绝对不可以依赖他们的加载顺序。

3. 结论

在实践中,如果需要保障组件依次加载完成,绝对不可以依赖组件的生命顺序,也不能依赖父子组件的ready生命周期。

如何判断所有的子组件加载完成

在父子组件的配合使用中,尤其是配置信息与业务信息相分离的情况下,我们经常需要在所有的子组件加载完成后,再执行父组件的相关服务,以如下的组件结构为例:

     

登录后复制

在上面的例子中,我们需要组合子组件的配置信息,因此,只有所有的子组件加载完成,组合的配置信息才能准确完整。

所以,如果直接用mounted事件(1.0中为ready事件),则一定得到不正确的结果,为了解决此问题,我们不妨生命如下的数据结构与方法:

props : { colSize : {  type : Number,  default : 1 }}data () { return {  // 用于获取所有的子组件配置信息  colModel : [],  readySize : 0 }},methods : { /**  * 由子组件在加载完成时调用  */ addColModel () {   this.readySize ++   // 检查进度是否设置的colSize一致   if(this.readySize == this.colSize) {   // 这时候所有的子组件已加载完成   }  }}

登录后复制

通过设置配置项“colSize”与检查子组件调用的方法“addColModel”,我们可确定所有子组件加载完成的时刻(此时父组件有可能加载完成,也可能未加载完成),从而进行必要的配置信息整理操作。

但是在实际应用中,我们发现,如果子组件的数量较多时,会发生另外一种现象,子组件加载顺序会随机发生,如果要保证加载顺序与配置顺序一致,我们可以在子组件中加入“order”属性,如下,最新配置内容如下:

   

登录后复制

经过这样的处理,我们可以在所有子组件加载完成对其进行排序,如下:

// 由于Vue无法确定子元素的加载顺序,必须手动指定orderthis.colModel.sort((a, b) => a.order - b.order)

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS获取当前地理位置案列详解

parabola.js实现抛物线与加入购物车功能

以上就是怎么操作Vue加载顺序的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2771570.html

(0)
上一篇 2025年3月8日 13:00:12
下一篇 2025年3月8日 13:00:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • AngularJS获取焦点以及操作焦点

    这次给大家带来AngularJS获取焦点以及操作焦点,AngularJS获取焦点以及操作焦点的注意事项有哪些,下面就是实战案例,一起来看一下。 angular.module(‘formExample’, []) .controller(‘F…

    编程技术 2025年3月8日
    200
  • BootStrap操作数据表格(实例代码)

    这次给大家带来BootStrap操作数据表格,BootStrap操作数据表格的注意事项有哪些,下面就是实战案例,一起来看一下。 首先初始化页面 $(function(){ $(‘#archives-table’).bootstrapTabl…

    编程技术 2025年3月8日
    200
  • 优化页面加载速度插件InstantClick

    这次给大家带来优化页面加载速度插件InstantClick,使用优化页面加载速度插件InstantClick的注意事项有哪些,下面就是实战案例,一起来看一下。 通常,我们为了减少DNS的查询时间,我们可以使用dns prefetch为该页面…

    编程技术 2025年3月8日
    200
  • JS+canvas操作gif动图

    这次给大家带来JS+canvas操作gif动图,JS+canvas操作gif动图的注意事项有哪些,下面就是实战案例,一起来看一下。 HTML5 canvas可以读取图片信息,绘制当前图片。于是可以实现图片马赛克,模糊,色值过滤等很多图片特效…

    编程技术 2025年3月8日
    200
  • Node.js文件系统操作

    这次给大家带来Node.js文件系统操作,Node.js文件系统操作的注意事项有哪些,下面就是实战案例,一起来看一下。 1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建、写入及删除操作。,在fs模块中…

    编程技术 2025年3月8日
    200
  • canvas怎么编辑操作图像

    这次给大家带来canvas怎么编辑操作图像,canvas编辑操作图像的注意事项有哪些,下面就是实战案例,一起来看一下。 本次文章将分为几个小功能的形式来详细介绍canvas图像编辑 缩放 下面是一张分析图,假设默认情况下,图片和canvas…

    编程技术 2025年3月8日
    200
  • js操作表格

    这次给大家带来js操作表格,js操作表格的注意事项有哪些,下面就是实战案例,一起来看一下。 实现思路: 1、添加时:获取当前列表的行数,在当前一行添加下一行;2、用insertCell()方法添加一行,下标从0开始,3、若要给新一行添加类型…

    编程技术 2025年3月8日
    200
  • jQuery做出鼠标滚轮操作图片缩放大小

    这次给大家带来jQuery做出鼠标滚轮操作图片缩放大小,jQuery做出鼠标滚轮操作图片缩放大小的注意事项有哪些,下面就是实战案例,一起来看一下。 鼠标滚轮控制图片缩放$(function() { function zoomImg(o) {…

    编程技术 2025年3月8日
    200
  • jQuery操作锚点动态位移

    这次给大家带来jQuery操作锚点动态位移,jQuery操作锚点动态位移的注意事项有哪些,下面就是实战案例,一起来看一下。 使用jQuery animate()方法实现页面平滑滚动特效 $(‘html, body’).animate({sc…

    编程技术 2025年3月8日
    200
  • vue-router懒加载详解(附代码)

    这次给大家带来vue-router懒加载详解(附代码),vue-router懒加载使用的注意事项有哪些,下面就是实战案例,一起来看一下。 用过vue-router都知道它可以实现模块js的懒加载,即只有当需要时才去加载对应模块的js脚本文件…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论