今天在用vue做项目的时候发现到了一些问题,在获取一些需要加载图片的组件时,比如获取这些组件的offsetTop属性,就动不动就会报出undefined错误,原因就是图片没有彻底加载完
问题:在哪里才能获取到正确的offsetTop呢?
- created肯定不行,压根不能获取元素
- mounted也不行,组件虽然渲染挂载完成,但是图片数据还没有获取到
- updated中获取到的数据的回调中也不行,DOM还没有渲染完,只是数据刷新了又不是DOM加载完了,记住这里的dom是浏览器上的dom不是vue上的组件,mounted只是组件渲染完了,而不是dom渲染完了,所以updated也不行,因为数据是更新了,但我还没彻底把dom渲染上去
- $nextTick也不行,因为图片的高度没有被计算在内
- 在所有图片加载完后,获取的高度才是正确的,可以再加一个防抖函数以防过多执行。
vue的各种执行顺序真的很重要,不然动不动就会undefined!!!