Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.9k views
in Technique[技术] by (71.8m points)

请教一下created,mounted,$nextTick的关系?

网上搜了好久他们之间的关系,还是有点懵懵的:
1:我把this.$nextTick放在created里面和mounted里面有什么区别吗?
2:为什么$nectTick能保证子组件都加载完呐?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

关于第一个问题:

对组件本身来说没区别。非说有有区别的话也就是你要两个里面都写 $nextTickcreated 里那个会比 mounted 里的先触发。

如果有异步子组件的情况下,有点儿区别,下面会说。


关于第二个问题:

如果是同步子组件,mounted 就已经能保证了同步子组件都加载完了。因为对于一个页面来说,第一次 DOM 更新循环结束,也就是 mounted 的时候。

同步顺序是 parent createdchild createdchild mountedchild $nextTickparent mountedparent $nextTick

如果是异步子组件,你需要在 mounted 里写 $nextTick,但也并不能完全保证子组件加载完毕,因为异步子组件里还可以再套异步孙子组件。

总而言之,同步子组件,写 created + $nextTick 和写 mounted 都行;异步子组件,除非是在父组件中直接操作异步子组件的生命周期钩子、或者子组件通过 $emit 的方式通知父组件,否则单纯靠父组件自己,是无法百分百保证的。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...